Node.jsのクロスドメイン設定方法を紹介した記事

PHPz
リリース: 2023-04-05 09:43:10
オリジナル
2316 人が閲覧しました

インターネットの発展に伴い、フロントエンドとバックエンドの分離傾向がますます顕著になってきています。フロントエンドとバックエンドの分離開発では、フロントエンド ページがバックエンド API インターフェイスをリクエストすると、クロスドメインの問題により多くの不便が生じます。この記事ではNode.jsのクロスドメイン設定方法を紹介します。

1. クロスドメインとは

1.1 同一生成元ポリシーとは

Web セキュリティの分野では、同一生成元ポリシーとは次のことを指します。 、ドメイン名とポート番号が必要です。あるソースのドキュメントは、それらがまったく同じである場合にのみ、別のソースからアクセスできます。簡単に言うと、ページ内の JavaScript は、それ自体と同じソースからのドキュメントのみを読み取り、操作できます。

1.2 クロスドメインとは

ドメイン名 A の Web ページがスクリプトを通じてドメイン名 B のリソースにアクセスするとします。この状況をクロスドメインと呼びます。

2. ドメイン間の Node.js 設定

2.1 Cors モジュールのインストール

Cors は、クロスドメイン アクセスを可能にする Node.js モジュールです。インストールさえしておけば、クロスドメインの問題を簡単に解決できます。

npm install cors

2.2 Node.js での Cors モジュールの使用

Express フレームワークでは、cors を直接使用してクロスドメインの問題を解決できます。

const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
ログイン後にコピー

上記のコードは、プロジェクト内のすべてのルートで CORS を有効にします。特定のルートでのみ有効にしたい場合は、次のコードを使用できます:

const express = require('express');
const cors = require('cors');
const app = express();
const router = express.Router();

const corsOptions = {
    origin: 'http://example.com', // 允许访问的域名
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
};

router.get('/', cors(corsOptions), function(req, res) {
    //...
});

app.use('/', router);
ログイン後にコピー

2.3 カスタム クロスドメイン設定

より詳細なクロスドメイン設定が必要な場合は、cors のさまざまなオプションを使用してカスタマイズできます。よく使用されるオプションは次のとおりです:

const corsOptions = {
    origin: 'http://example.com', // String: 允许访问的域名,可以是字符串或正则表达式
    methods: ['GET', 'POST'], // Array: 允许的HTTP请求方法
    allowedHeaders: ['Content-Type'], // Array: 允许使用的自定义Header
    exposedHeaders: ['Content-Type'], // Array: 允许客户端访问的响应头
    credentials: true, // Boolean: 是否发送Cookies
    maxAge: 86400 // Number: 预检请求缓存时间,单位秒
};
app.use(cors(corsOptions));
ログイン後にコピー

3. 概要

Node.js は、クロスドメインの問題を簡単に解決できる cors モジュールを提供します。 Express フレームワークでは、たった 1 行のコードで CORS を有効にすることができます。同時に、より柔軟なニーズに合わせてクロスドメイン設定をカスタマイズすることもできます。

以上がNode.jsのクロスドメイン設定方法を紹介した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!