[Q035]のhttp共通ステータスコードは何ですか
Exchangeおよび問題での議論:回答分析
- 1XXメッセージを表します
- 2XXは、成功を示します
- 3XXリダイレクト
- 4XXそのクライアントエラー
- 5XX表現サーバーエラー
一般的なステータスコード
200
以下のようなほとんどは、要求が成功したことを示すステータスコードを表示するには
301
恒久的なリダイレクト
302
一時的なリダイレクト
304
最後の要求以来、変更されていない文書
400
不正なリクエスト
401
無許可、認証、などのトークン情報などを要求します
403
要求が拒否されました
404
資源の不足、インタフェースなど、存在しないか、または要求されたファイルが存在しません。
500
不明なサーバーエラー
502
不正なゲートウェイ
503
サービスが一時的に利用できません
[Q036] HTTPステータスコードの違いは何ですか301、302及び307
Exchangeおよび問題での議論:回答分析
- 301は、恒久的に移動します。あなたは301を設定した場合、いくつかの時間後にキャンセルしたいのですが、ブラウザがすでにキャッシュされた、またはリダイレクトされました:永久リダイレクト、操作は危険であり、我々は注意を払う必要があります。
- 302、泉。一時的なリダイレクトが、我々はリダイレクト時にメソッドを変更します:POSTのGETを変更するので、307で
- 307、一時的なリダイレクト。一時的なリダイレクト、リダイレクトはこの方法では変更されません
[Q050] HTTPステータスコード502と504の違いは何ですか
Exchangeおよび問題での議論:回答分析
バート・ゲートウェイ502
、ゲートウェイサーバのか、Aは行動していたプロキシとAS ANは、サーバーから上流の無効な応答を受け取りました。
応答を受け取ったが、上流を解決することはできません504ゲートウェイタイムアウト
サーバーがゲートウェイまたはプロキシとして動作し、上流のサーバからのタイムリーな応答を受信しなかった。
上游响应超时
[Q079] HTTP概説機構をキャッシュ
Exchangeおよび問題での議論:回答分析
何[Q081] HTTPプロキシ原理は、
以上の説明: `のWebPACK-DEV-server`プロキシを提供することができる、`設けられていてもよいnginx`
Exchangeおよび問題での議論:回答分析
全て
HTTP2の発展に伴い[Q084]、フロントエンドのパフォーマンスの最適化は、置換されていてもよく、従来の方式は
Exchangeおよび問題での議論:回答分析
- スプライトマップ
- マージリソースファイル
[Q085] HTTP2 HTTP1.1との違いは何ですか
Exchangeおよび問題での議論:回答分析
[Q107]基本認証とダイジェスト認証とは何ですか
Exchangeおよび問題での議論:回答分析
何がGZIPの原理は[Q108]であります
Exchangeおよび問題での議論:回答分析
gzip
使用するLZ77
アルゴリズムとHuffman
高い空間反復性の圧縮可能より大きいが、圧縮ファイルにエンコードしたファイル。
[Q109]あなたは絵のGZIP圧縮をオンにすることができ、そしてなぜ
Exchangeおよび問題での議論:回答分析
オープンする必要はありません、開いている場合は、その、大きな絵になる可能性を秘めていません。あなたは、リソースIMGいくつかのサイトを注意を払っている場合、あなたは彼らが開いていないことがわかりますgzip
画像やその他のバイナリファイルのためにgzipを使用しないでください。
画像ファイルのWebでサポートされるフォーマットだけでなく、動画、PDFやその他のバイナリ形式は、既に圧縮されています。それらにはgzipを使用すると、任意の追加の利点を提供することはありませんし、実際にそれらを大きくすることができます。圧縮画像に、最適化画像を参照してください。
[Q110]要求パケットと応答パケットのフォーマットのhttp何
Exchangeおよび問題での議論:回答分析
nc
次のようにシミュレートHTTPパケット
$ nc www.baidu.com 80
GET / HTTP/1.1
Host: www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 14615
Content-Type: text/html
Date: Tue, 10 Dec 2019 02:48:44 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Pragma: no-cache
Server: BWS/1.1
Set-Cookie: BAIDUID=F0FC6B3A056DEA285F51A1F2F8A170BB:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=F0FC6B3A056DEA285F51A1F2F8A170BB; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1575946124; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=F0FC6B3A056DEA287CB2B9422E09E30E:FG=1; max-age=31536000; expires=Wed, 09-Dec-20 02:48:44 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Traceid: 1575946124058431156210725656341129791126
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
<!DOCTYPE html><!--STATUS OK-->
........内容省略
[Q111] HTTPのETagヘッドが生成される方法に応じて値
Exchangeおよび問題での議論:回答分析
etag
いくつかの条件を満たしている必要性を生成
- ファイルが変更されない場合は、
etag
値は変更されません。私たちは、単に使用することはできませんinode
- 計算の容易さは、特にCPUを消費しません。このように
hash
、特に適していません - 規模に簡単に、複数の
node
生成etag
同じ値。この方法ではinode
除外しました
サーバーについてetag
どのように参照を生成することがあります。http:生成のETagヘッダーを
その後nginx
にetag
それがどのように発生するのですか?
ETagの中で発生したnginxの
私はいくつかの情報を発見し、ソースコードをオンライン学習するetag
計算方法を。Aはpython
、以下のように疑似コードが計算される表します
etag = '{:x}-{:x}'.format(header.last_modified, header.content_lenth)
etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
r->headers_out.last_modified_time,
r->headers_out.content_length_n)
- etag->value.data;
要約:nginx
でetag
レスポンスヘッダLast-Modified
とContent-Length
進数の組み合わせから発現されます。
私のK8Sクラスタで容易に見つけるnginx
サービス・テスト
$ curl --head 10.97.109.49
HTTP/1.1 200 OK
Server: nginx/1.16.0
Date: Tue, 10 Dec 2019 06:45:24 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 23 Apr 2019 10:18:21 GMT
Connection: keep-alive
ETag: "5cbee66d-264"
Accept-Ranges: bytes
etag
計算Last-Modified
とはContent-Length
使用してjs
、結果と一致して、以下のように計算します
> new Date(parseInt('5cbee66d', 16) * 1000).toJSON()
"2019-04-23T10:18:21.000Z"
> parseInt('264', 16)
612
Last-Modified、ETagのキャッシュとの協議
私たちは、キャッシュを交渉するための2つの方法があることを知っています
Last-Modified
/if-Modified-Since
ETag
/If-None-Match
以来nginx
、中央ETag
のLast-Modified
とContent-Length
構図、それが強化されたバージョンになりますLast-Modified
エリアを強化すること、?
** Last-Modified
でunix timestamp
**表現は、それが唯一の変更のセカンドレベルに作用することができることを意味
その次の質問:HTTPレスポンスヘッダのETag値が変更された場合、それはファイルの内容が変更されていなければならないことを意味
[Q112] HTTP応答ヘッダーのETag値が変更された場合、それはファイルの内容が変更されていなければならないことを意味
Exchangeおよび問題での議論:回答分析
必ずしもそうではありません、中にサーバーによってETag
決定生成アルゴリズム。参照してください#112
例えば、nginx
でetag
作らlast_modified
とcontent_length
なる、とlast_modified
有しているmtime
組成物を
ファイルを編集するが、ときにファイルの内容を変更していない、またはtouch file
、mtime
変更され、この時etag
に変更するが、ドキュメントの内容を変更しないでください。
[Q116]のhttpのLast-Modified静的ファイルの提供が何に基づいて生成されます
Exchangeおよび問題での議論:回答分析
通常、選択したファイルmtime
、ファイルの更新時刻の内容を表しています
nginx
同じように扱わ、酸味:ngx_http_static_module.c
r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_length_n = of.size;
r->headers_out.last_modified_time = of.mtime;
理由についてmtime
の代わりにctime
、を参照してください#116
[Q117] HTTPはステートレスなプロトコルであるので、それはログインしたままにする方法です
Exchangeおよび問題での議論:回答分析
サーバー上の資格情報をCookieまたはAuthorizationヘッダー、認証を渡すには
[Q119] HTTPSは、安全メッセージを確実にする方法であります
Exchangeおよび問題での議論:回答分析
httpsのアドレス3つの主要なセキュリティ上の問題:
- プライバシーのコンテンツ
- 耐タンパ性
- 互いの身元を確認
httpsを直接ではなく、送信時に、非対称暗号化による、しかし、握手、ハンドシェイクプロセスは、最終的な秘密鍵を通じて行うとサーバーの通信を、秘密鍵を生成し、データ伝送のための対称暗号化することが主な理由です。だけでなく、証明書の正しさを検証します。
相手が正当なものであり、中間者攻撃は、証明書によって偽造できないことを保証する証明書の検証プロセス。
[Q121]どのように我々はサービスがHTTPパケットからの技術スタックを使用していることを知っています
Exchangeおよび問題での議論:回答分析
二つの一般的なレスポンスヘッダは時々これらの2つのフィールドが非表示になります彼らの真のサーバー側の技術スタックを隠すために、あります。
X-Powerd-By
Server
[Q122]のhttpリクエストパケットを送信するときに、ホストが行う必要があります
Exchangeおよび問題での議論:回答分析
サーバーに直接、サーバがどのリソースでパスを知ることができれば、しかし、プロキシによって、プロキシサーバがどのような特定のアドレスを知られていない場合、我々は知らないので、ブローカーではありません、必要な道を行きます
[Q133] HTTP応答アプリケーション/オクテットストリームにContent-Typeヘッダならば、何がその平均代表し
Exchangeおよび問題での議論:回答分析
これは、一般的に、ダウンロードファイルを使用し、バイナリストリームを表し、
ステータスコードが使用されるべきである何をすべきか、HTTPSリダイレクトに[Q136]のhttp
Exchangeおよび問題での議論:回答分析
一般的に使用され301
、より多くのではなく、使用302
開設があれば、HSTS
使用されます307
ほぼ302を使用することが知られているように、301は、淘宝網を使用しました
$ curl --head www.zhihu.com
HTTP/1.1 302 Found
Date: Tue, 24 Dec 2019 00:13:54 GMT
Content-Length: 22
Connection: keep-alive
Server: NWS_TCloud_IPV6
Location: https://www.zhihu.com/
X-NWS-LOG-UUID: 0e28d9a1-6aeb-42cd-9f6b-00bd6cf11500
$ curl --head www.taobao.com
HTTP/1.1 301 Moved Permanently
Server: Tengine
Date: Tue, 24 Dec 2019 00:13:58 GMT
Content-Type: text/html
Content-Length: 278
Connection: keep-alive
Location: https://www.taobao.com/
Via: cache20.cn1480[,0]
Timing-Allow-Origin: *
EagleId: 6f3f38a815771464380412555e
[Q141]のhttp DateヘッダのLast-Modified応答とどのような違いがあり、どのような展開サイトに注意を払うする必要があります
Exchangeおよび問題での議論:回答分析
LM-Factor
そしてタリア関連。
要するに、静的リソースの設定はありませんCache-Control
キャッシュを直接交渉するのではなく時には、これらの2つのヘッドに対応するために必須のバッファ時間を設定します。それが更新されたコードに反映され、より多くの明白な、CDNに来るが展開されている場合、インターフェースは更新されません。
の役割は何キープアライブ[Q144] HTTP 1.1
Exchangeおよび問題での議論:回答分析
ではhttp 1.1
レスポンスヘッダに設定され、keep-alive
TCP接続上で複数のHTTPリクエストを送信することができ
- TCP接続のオーバーヘッドの再開を回避するために、
- リフレッシュ時に再確立SSL接続のオーバーヘッドを回避
- QPSには、サーバーへの接続が大きすぎる、あまりにも多くのを避ける場合には
使用すると、最初のサーバに応じてオン keep-alive
Connection: Keep-Alive
Keep-Alive: timeout=5, max=1000