クロスドメインとは、あるドメインのドキュメントまたはスクリプトが別のドメインのリソースを要求しようとすることを意味します。この場合、ブラウザには同一生成元ポリシーがあるため、クロスドメインの問題が発生します。このポリシーは、セキュリティの確保に努めます。 Web アプリケーションを可能な限り最大限に活用します。つまり、異なるドメインにあるクライアント スクリプトは、明示的な承認がなければ、互いのドキュメント コンテンツを読み書きすることができません。
Node.js は、Web アプリケーションの作成を容易にする、人気のあるサーバーサイド JavaScript ランタイム環境です。 Node.js では、複数のメソッドを使用してクロスドメイン リクエストを処理できます。一般的なクロスドメイン処理方法は次のとおりです:
1. CORS を使用します
CORS は「クロスドメイン リソース共有」の略で、標準化されたクロスドメイン ソリューションです。クライアントが他のドメインのリソースにアクセスできるように、サーバーからクライアントに認証情報を送信します。 Node.js では、CORS を使用してクロスドメイン要求を実現できます。
CORS を使用して Node.js のクロスドメインの問題を解決するのは非常に簡単です。必要なのは、cors モジュールをインストールして使用することだけです。サンプル コードは次のとおりです:
const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); app.get('/api/data', function (req, res) { // 处理请求 }); app.listen(3000, function () { console.log('Server listening on port 3000'); });
2 JSONP を使用する
JSONP は、クロスドメインの問題を解決するために使用される非常に古いテクノロジーです。HTML タグの src 属性のクロスドメイン機能を利用し、スクリプト タグを動的に生成することで他のドメインを間接的に取得します。そして、その src 属性のデータを以下に設定します。 Node.js では、JSONP を使用してクロスドメイン リクエストを実現できます。サンプル コードは次のとおりです:
const express = require('express'); const app = express(); app.get('/api/data', function (req, res) { const callback = req.query.callback; // 处理请求 res.send(callback + '(' + JSON.stringify(data) + ');'); }); app.listen(3000, function () { console.log('Server listening on port 3000'); });
3. プロキシ サーバーの使用
プロキシ サーバーは、転送する方法です。サーバーへのクライアントのリクエスト 他のサーバーに転送されたサーバーは、プロキシ サーバーを使用してクライアントのリクエストをサーバー側の他のドメインのリソースに転送できるため、クロスドメインの目的を達成できます。 Node.js では、http-proxy-middleware を使用してプロキシ サーバーを構築できます。サンプル コードは次のとおりです:
const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); app.use('/api', createProxyMiddleware({ target: 'http://example.com', changeOrigin: true, })); app.listen(3000, function () { console.log('Server listening on port 3000'); });
要約
クロスドメインを実装するには、さまざまな方法があります。 Node.js では、CORS を使用する方が便利で標準化されたソリューションですが、JSONP とプロキシ サーバーを使用するのはあまり使用されていませんが、依然として実現可能なソリューションです。どのソリューションを使用するかは、特定のニーズやシナリオに基づいて選択できますが、クロスドメイン操作は Web アプリケーションのセキュリティに影響を与える可能性があるため、注意して操作する必要があることに注意してください。
以上がNodejs はクロスドメインを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。