リクエストヘッダが関係します:
User-Agent:ユーザーエージェント文字列で、ブラウザのカーネル、バージョン、置かれているオペレーティングシステムのバージョンやその他の情報を読み取ることができます。
ホスト:ブラウザがhttpリクエストを行う際に使用したドメイン名。
サーバーが複数のWebサイトを持つことができますので、別のドメイン名を持つ別のWebサイトが、このケースでは、クライアントのipに接続するためのipが同じであり、ipは、解像度の接続では、tcp / ipレイヤーのサーバーでは、ドメイン名の反対側が自分自身に接続するものを知りません。
GET /index.html HTTP/.1 Host: lily.github.io
Referer: 現在のリソースの参照元ページ。
つまり、もしサーバーがこのヘッダーを通して、返されたリソースが他のウェブサイトによって使用されていることを発見した場合、空のコンテンツを返すか、著作権表示のイメージを返すことができます。
これは、現在のユーザーのアドレスバーの完全なアドレスをリソースのあるサーバーに送信するため、一定のプライバシーリスクがあります。
Accept: 受け入れ可能なリソースのメディアタイプ。qの値は期待値の大きさを表します。
Accept-Encoding: 受け入れ可能なリソースのレスポンスボディの圧縮アルゴリズム。
Accept-Language:ページが受信されると予想される自然言語の言語。
Content-Type: リクエスト/レスポンスボディのメディアタイプとエンコーディング
text / html; charset = UTF - 0x8; application / javascript; charset = UTF - 0x8; application / json; charset = UTF - 0x8; image / jpeg; image / webp;
If-Modified-Since/Last-Modified : 時間ベースのネゴシエーションキャッシュで、ネゴシエーションが成功したら 304 ステータスコードを返します。
If-None-Match/ETag: コンテントベースのネゴシエーション・キャッシングで、 ネゴシエーションが成功すると 304 ステータスコードを返します。
Content-Length: リクエストボディの長さ。
Connection: keep-alive、http リクエストをホストしている tcp 接続の状態をネゴシエートして、同じ tcp で複数の http リクエスト/レスポンスを実行します。
- パイプライン(Pipeline): リクエスト/レスポンスをパイプライン化する、つまり、レスポンスの受信を待ってから同じコネクション上で次のリクエストを送信する必要はなく、すべてのリクエストを一度に送信し、すべてのレスポンスの受信を順番に待つことができます。
応答キャスト関連:
Content-Encoding: レスポンス本体の圧縮アルゴリズム
Content-Length: レスポンス・ボディの長さ
Content-Type:レスポンスボディのメディアタイプとエンコーディング方式
ETag: レスポンスボディのハッシュ
Last-Modified: このリソースの最終更新時刻。
サーバー: サーバーが使用するソフトウェア。一般的にサーバーはこのヘッダーに応答しません。なぜなら、サーバーソフトウェアに脆弱性がある場合、このヘッダーに応答することは、サーバーに脆弱性があることを他者に伝えることと同じだからです。
Expires: このリソースの有効期限。この有効期限内であれば、ブラウザはリクエストを送信せずにこのリソースを再利用できます。
Accept-Range:bytes
転送エンコーディング:チャンク
レスポンスデータを一度に 1 セグメントずつ送信する方法で、 サーバがレスポンスボディの長さを予測できない場合に使用します。この機能を使用する場合、tcp はこの 1 つの http リクエストにのみ進むことができ、tcp 接続が切断されるとレスポンスは終了します。
content-disposition: attachment; filename="index.html"
このレスポンスヘッダは、ブラウザがデフォルトのファイル名でダウンロードダイアログボックスをポップアップするきっかけとなります。
X-Frame-Options: このページを他のページの iframe に入れるかどうかを設定します。
deny:iframeに入れることを一切許可しません。
same-origin: 同一オリジンのiframeに入れることができます。
Content-Security-Policy:コンテンツセキュリティポリシー、htmlページにのみ反応し、このページのセキュリティ関連の設定を行います。
Cache-Control: キャッシュ制御。
リクエストヘッダまたはレスポンスヘッダとして使用することで、キャッシングポリシーをきめ細かく制御することができます。
例
default-src:'none';
base-uri:'self';
block-all-mixed-content;
すべての混合コンテンツを無効にする
connect-src:'self' uploads.github.com www.githubstatus.comcollector.githubapp.com api.github.com www.google-analytics.comgithub-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events wss://alive.github.com;
ページ内のjsが接続できるターゲットサーバー
font-src:github.githubassets.com;
ページがロードできるフォントのソース
form-action:'self' github.com gist.github.com;
フォームの送信先サーバ
frame-ancestors:'none';
誰がこのページのフレームの祖先になれるか
frame-src:render.githubusercontent.com;
このページのiframeは、そのiframeがどこから来たのかを読み込むことができる。
img-src:'self' data: github.githubassets.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com customer-stories-feed.github.com spotlights-feed.github.com;
イメージをどこから読み込むか
manifest-src:'self';
manifestの情報をどこから読み込むか。
media-src:'none';
mediaの情報をどこから読み込むか。
script-src:github.githubassets.com;
スクリプトは
<div onclick="alert(2)"></div>//インラインは許可されない。サーバー上のスクリプトのみ。
style-src:github.githubassets.com;
スタイルは
<div style="color:red"></div>;
worker-src:github.com/socket-worker.js gist.github.com/socket-worker.js
workerコードがどこからロードされるかは