約2ダースメーカーHTTP顔の質問はインタビューで尋ねました

[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および問題での議論:回答分析

  1. スプライトマップ
  2. マージリソースファイル

[Q085] HTTP2 HTTP1.1との違いは何ですか

Exchangeおよび問題での議論:回答分析

[Q107]基本認証とダイジェスト認証とは何ですか

Exchangeおよび問題での議論:回答分析

何がGZIPの原理は[Q108]であります

Exchangeおよび問題での議論:回答分析

gzip使用するLZ77アルゴリズムとHuffman高い空間反復性の圧縮可能より大きいが、圧縮ファイルにエンコードしたファイル。

[Q109]あなたは絵のGZIP圧縮をオンにすることができ、そしてなぜ

Exchangeおよび問題での議論:回答分析

オープンする必要はありません、開いている場合は、その、大きな絵になる可能性を秘めていません。あなたは、リソースIMGいくつかのサイトを注意を払っている場合、あなたは彼らが開いていないことがわかりますgzip

参考:https://webmasters.stackexchange.com/questions/8382/is-gzipping-images-worth-it-for-a-small-size-reduction-but-overhead-compressing

画像やその他のバイナリファイルのために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いくつかの条件を満たしている必要性を生成

  1. ファイルが変更されない場合は、etag値は変更されません。私たちは、単に使用することはできませんinode
  2. 計算の容易さは、特にCPUを消費しません。このようにhash、特に適していません
  3. 規模に簡単に、複数のnode生成etag同じ値。この方法ではinode除外しました

サーバーについてetagどのように参照を生成することがあります。http:生成のETagヘッダーを

その後nginxetagそれがどのように発生するのですか?

ETagの中で発生したnginxの

私はいくつかの情報を発見し、ソースコードをオンライン学習するetag計算方法を。Aはpython、以下のように疑似コードが計算される表します

etag = '{:x}-{:x}'.format(header.last_modified, header.content_lenth)

出典:ngx_http_core_modules.c

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;

要約:nginxetagレスポンスヘッダLast-ModifiedContent-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、中央ETagLast-ModifiedContent-Length構図、それが強化されたバージョンになりますLast-Modifiedエリアを強化すること、?

** Last-Modifiedunix timestamp**表現は、それが唯一の変更のセカンドレベルに作用することができることを意味

その次の質問:HTTPレスポンスヘッダのETag値が変更された場合、それはファイルの内容が変更されていなければならないことを意味

[Q112] HTTP応答ヘッダーのETag値が変更された場合、それはファイルの内容が変更されていなければならないことを意味

Exchangeおよび問題での議論:回答分析

必ずしもそうではありません、中にサーバーによってETag決定生成アルゴリズム。参照してください#112

例えば、nginxetag作らlast_modifiedcontent_lengthなる、とlast_modified有しているmtime組成物を

ファイルを編集するが、ときにファイルの内容を変更していない、またはtouch filemtime変更され、この時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つの主要なセキュリティ上の問題:

  1. プライバシーのコンテンツ
  2. 耐タンパ性
  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-aliveTCP接続上で複数のHTTPリクエストを送信することができ

  1. TCP接続のオーバーヘッドの再開を回避するために、
  2. リフレッシュ時に再確立SSL接続のオーバーヘッドを回避
  3. QPSには、サーバーへの接続が大きすぎる、あまりにも多くのを避ける場合には

使用すると、最初のサーバに応じてオン keep-alive

Connection: Keep-Alive
Keep-Alive: timeout=5, max=1000

おすすめ

転載: www.cnblogs.com/xianwang/p/12089494.html