ホームページ >バックエンド開発 >PHPチュートリアル >API サーバーとフロントエンド サーバー間のクロスドメインの問題を解決するにはどうすればよいですか?

API サーバーとフロントエンド サーバー間のクロスドメインの問題を解決するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-08-18 09:15:431234ブラウズ

ブラウザは、フロントエンド サーバーに HTML、CSS などの静的リソースをリクエストします。
その後、ブラウザは API サーバーに ajax リクエストを送信し、クロスドメインの問題を引き起こします。

私の現在の計画は、フロントエンドとバックエンドのリソースの両方を同じドメイン名の下に置くことですが、それはあまり合理的とは思えません。
2 つ目は、リバース プロキシを使用することですが、試したことがなく、適切かどうかわかりません。

バックエンドを通じてこの問題を解決するにはどうすればよいですか?

返信内容:

ブラウザは、フロントエンド サーバーに HTML、CSS などの静的リソースをリクエストします。

その後、ブラウザは API サーバーに ajax リクエストを送信し、クロスドメインの問題を引き起こします。

私の現在の計画は、フロントエンドとバックエンドのリソースの両方を同じドメイン名の下に置くことですが、それはあまり合理的とは思えません。

2 つ目は、リバース プロキシを使用することですが、試したことがなく、適切かどうかわかりません。

バックエンドを通じてこの問題を解決するにはどうすればよいですか?

基本的に、クロスドメインには次のソリューションがあります

    JSONP
  1. コル
  2. window.name
  3. ドキュメント.ドメイン
  4. 5.location.ハッシュ
  5. 6.window.postMessage()
  6. 詳しくは以下の記事をご覧ください https://github.com/rccoder/bl...

API サーバーはクロスドメイン ヘッダーを設定するだけで済みます。Spring で記述する場合は、次のようなコードを使用できます。 リーリー

たとえば、P と API という 2 つのプロジェクトがあります

その後、呼び出し方法は同様です: P フロントエンド - 》P バックエンド - 》API

対象のバックエンドは Nodejs です。Express の場合は、次のコードを使用してミドルウェアにパッケージ化することをお勧めします。 リーリー

最良の答えはすでにあります。Cookie の取得をリクエストする場合は withCredentials: true を使用することを忘れないでください

jsonpは参考として使用できます

Access-Control-Allow-Origin: フロントエンド ドメイン名

個人的には、リバースプロキシを使用するのが最も信頼できると思います

リバース プロキシには nginx を使用する方が便利かもしれませんが、クロスドメイン応答ヘッダーの設定は IE と完全には互換性がありません

リバースプロキシは比較的シンプルです

node によって記述されたバックエンド コードが Express/koa を使用している場合、cors() ミドルウェアをバックエンド コードに直接導入できます

リバースプロキシとしてnginxを使用するとより便利です

API サーバーに js ファイルを配置し、フロントエンドでそれを参照するだけで、外部統計を呼び出すロジックと同様に、クロスドメインの問題は発生しません。

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