ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejs 設定でクロスドメインを禁止する

Nodejs 設定でクロスドメインを禁止する

王林
王林オリジナル
2023-05-25 14:43:08598ブラウズ

Web アプリケーションが開発され、より複雑になるにつれて、クロスドメイン リクエストがより頻繁になります。簡単に言えば、クロスドメインリクエストとは、あるページまたはドメイン名から別のドメイン名にリクエストを送信することを意味します。クロスドメイン要求は、セキュリティ上の問題を引き起こす可能性があるため、セキュリティに関しては良いことではありません。この記事では、Node.js を使用してクロスドメイン禁止を設定する方法を説明します。

クロスドメインとは

クロスドメインリクエストとは、あるドメイン名のページが別のドメイン名のリソースをリクエストすることを意味します。たとえば、http://test1.com ページに http://test2.com/image.jpg をロードしようとすると、クロスドメイン リクエストが発生します。 Web ブラウザでは、クロスドメイン要求はデフォルトで禁止されています。以下の図に示すように、異なるドメインからのリクエストはブロックされます。

Cross-domain request blocked

セキュリティの観点から見ると、これは非常に優れた機能です。悪意のあるユーザーが他の Web サイトにリクエストを送信できる場合、それらの Web サイトを攻撃して機密情報を取得する可能性があるためです。したがって、ブラウザーは、明示的に許可されていない限り、クロスオリジンリクエストを禁止します。

クロスドメイン リクエストを禁止する方法

次に、Node.js を使用してクロスドメイン リクエストを禁止する方法を見てみましょう。クロスドメインリクエストを禁止するには、サーバー側で何かを設定する必要があります。以下は、Node.js を使用してクロスオリジン リクエストを無効にする方法を示す簡単な例です。

const express = require('express');
const cors = require('cors');

const app = express();

// 允许只来自example.com的跨域请求
const corsOptions = {
  origin: 'http://example.com',
  optionsSuccessStatus: 200
};

app.use(cors(corsOptions));

// ... 其他路由

app.listen(3000, () => {
  console.log('Server listening on port 3000.');
});

この例では、Express フレームワークと CORS ミドルウェアを使用して、クロスドメイン要求を禁止するようにサーバーを構成します。まず、corsOptions オブジェクトを定義します。origin 属性は、どのドメイン リクエストが許可されるかを指定します。その値は、単一のドメインを表す文字列または関数にすることができます。複数のドメインを許可します。

次に、CORS ミドルウェアを Express アプリケーションに適用します。このミドルウェアはすべての受信リクエストをチェックし、許可されたドメインからのものである場合は応答に Access-Control-Allow-Origin ヘッダーを含めます。

上記のコードを使用すると、http://example.com からのリクエストのみが許可され、成功を示すステータス コード 200 が返されます。リクエストに不正なソース ドメインが含まれている場合、サーバーは 403 ステータス コードを返してリクエストを拒否します。

別のプロトコルまたはポート番号を使用すると、別のドメイン名とみなされますので注意してください。例: http://example.comhttps://example.com、または http://example.comhttp : //example.com:3000

結論

この記事では、クロスドメインとは何か、なぜ禁止する必要があるのか​​を学びました。また、Node.js を使用してクロスオリジン リクエストを無効にするメソッドを設定する方法についても説明し、完全な例を示しました。これは、Web アプリケーションをクロスドメイン攻撃の脅威から確実に保護するための賢明で安全な方法です。

以上がNodejs 設定でクロスドメインを禁止するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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