目次
Node.js の HTTP ヘッダー情報
ホームページ ウェブフロントエンド フロントエンドQ&A nodejsは応答ヘッダー情報を設定します

nodejsは応答ヘッダー情報を設定します

May 16, 2023 pm 07:32 PM

Web 開発では、HTTP 応答のヘッダー情報はデータ送信とリクエスト処理にとって重要です。 Web ブラウザ、クローラ、およびその他の種類の HTTP クライアントは、ヘッダー情報に基づいて、応答の内容、形式、および可用性を判断します。

Node.js は、サーバー側 JavaScript プラットフォームとして、HTTP 応答ヘッダー情報を設定、読み取り、変更する方法も提供します。この記事では、Node.js で応答ヘッダーを設定するための方法とベスト プラクティスについて説明します。

Node.js の HTTP ヘッダー情報

Node.js の HTTP モジュールでは、res## の setHeader() メソッドを使用できます。 # レスポンスヘッダ情報を設定するオブジェクト。このメソッドは 2 つのパラメータを受け入れます。1 つ目はヘッダー名、2 つ目はヘッダーの値です。

たとえば、応答の

Content-Type ヘッダー情報を text/html に設定できます:

res.setHeader('Content-Type', 'text/html');
ログイン後にコピー

さらに、キャッシュを回避するか、キャッシュを有効にするために、圧縮 特殊な場合には、他のヘッダー情報も使用できます。以下に、いくつかの一般的なヘッダー情報とその使用法を示します。

Cache-Control

このヘッダー情報は、クライアントに応答をキャッシュする方法を通知するために使用されます。一般的な値は次のとおりです。

  • no-store: キャッシュを無効にし、毎回新しいリクエストを要求します。
  • no-cache: キャッシュできますが、使用前に検証する必要があります (If-Modified-Since または ETag などを介して)。
  • max-age=<Seconds>: キャッシュしてキャッシュ時間を指定できます。たとえば、max-age=3600 は、キャッシュが次の時間内で使用できることを意味します。一時間 。
たとえば、キャッシュなしを指定するには:

res.setHeader('Cache-Control', 'no-cache');
ログイン後にコピー

Content-Encoding

このヘッダーは、応答の圧縮方法についてクライアントに通知するために使用されます。サーバーで圧縮が有効になっている場合 (gzip を使用するなど)、クライアントはこのヘッダーを認識し、自動的に解凍できます。一般的な値は次のとおりです。

  • gzip: gzip 圧縮を使用します。
  • deflate: deflate 圧縮を使用します。
  • br: Brotli 圧縮を使用します。
たとえば、gzip 圧縮を有効にするには:

res.setHeader('Content-Encoding', 'gzip');
ログイン後にコピー

Content-Length

このヘッダーは、応答コンテンツのサイズをバイト単位で示します。サーバーがこの値を指定しない場合、クライアントは送信にチャンク エンコーディングを使用する必要がある場合があり、その結果、送信効率が低下します。

たとえば、応答コンテンツのサイズを 1024 バイトに指定するには:

res.setHeader('Content-Length', 1024);
ログイン後にコピー

ETag

このヘッダーは、応答コンテンツの識別子を指定するために使用されます。これは、応答が更新されたかどうかを判断するために、後続のリクエストの If-None-Match ヘッダーの値として使用できます。更新がない場合は、繰り返しの送信を避けるために 304 ステータス コードを返すことができます。

たとえば、ETag 値を指定するには:

res.setHeader('ETag', '123456789');
ログイン後にコピー

Last-Modified

このヘッダー情報は、応答コンテンツの最終変更時刻を指定するために使用されます。これは、応答が更新されたかどうかを判断するために、後続のリクエストで If-Modified-Since ヘッダーの値として使用できます。

たとえば、最終変更時刻を指定するには:

res.setHeader('Last-Modified', 'Sat, 10 Apr 2021 00:00:00 GMT');
ログイン後にコピー

ベスト プラクティス

上記のヘッダー情報に加えて、Node.js は他のヘッダー情報 (次のようなヘッダー情報) も提供します。 -

、X-、Cookie など) にアクセスし、プロジェクトの実際のニーズに応じて使用できます。ただし、実際には次のベスト プラクティスに従う必要があります。

1. 標準仕様に従う

HTTP プロトコルでは多くのヘッダー情報が指定されていますが、すべてのヘッダー情報をすべての応答に設定する必要はありません。実際のニーズに基づいて選択し、対応する標準と仕様 (RFC 文書で指定されているものなど) に従う必要があります。

2. 応答圧縮を適切に有効にする

応答圧縮を有効にする場合は、サーバーとクライアントの両方で適切に設定する必要があります。同時に、圧縮によるパフォーマンスの低下やデータの破損などの問題を回避するには、ネットワーク環境やサーバーのパフォーマンスなどの要因も考慮する必要があります。

3. ETag や Last-Modified の頻繁な更新を避ける

実際のアプリケーションでは、ETag や Last-Modified などのヘッダー情報が頻繁に更新されると、ブラウザのキャッシュが無効になり、影響を受ける可能性があります。パフォーマンスとユーザーエクスペリエンス。

4. Cookie などの機密情報を安全に処理する

ヘッダー情報を設定するときは、XSS、CSRF、SQL インジェクションなどのセキュリティの脆弱性を防ぐために、セキュリティの問題に特別な注意を払う必要があります。たとえば、Cookie を設定する場合は、HttpOnly や Secure などの属性を使用して、Cookie の機密性と整合性を確保する必要があります。

結論

Node.js は、HTTP 応答ヘッダー情報を設定、読み取り、変更するための豊富な API を提供します。ヘッダー情報を適切に使用すると、Web サイトのパフォーマンス、信頼性、セキュリティが向上し、一般的な HTTP 問題を回避できます。

実際のプロジェクトでは、関連する標準や仕様に従って、ニーズに応じて最適なヘッダ情報を選択する必要があります。同時に、セキュリティの脆弱性やデータ漏洩を防ぐために、対応するセキュリティ対策を講じる必要があります。

以上がnodejsは応答ヘッダー情報を設定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyなロードの概念を説明してください。

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

React和解アルゴリズムはどのように機能しますか?

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

JavaScriptでカリーはどのように機能し、その利点は何ですか?

イベントハンドラーのデフォルトの動作をどのように防止しますか? イベントハンドラーのデフォルトの動作をどのように防止しますか? Mar 19, 2025 pm 04:10 PM

イベントハンドラーのデフォルトの動作をどのように防止しますか?

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? 制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか? Mar 19, 2025 pm 04:16 PM

制御されたコンポーネントと制御されていないコンポーネントの利点と短所は何ですか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?

See all articles