1

ASP.Net MVC 4 Website別のプロジェクトがあります。現在、両方とも別のドメインでホストされています。フロント エンドで APIASP.Net Web APIを使用するために使用amplify.jsしています。両方の Web サイトが別のドメインでホストされているためAPIUI(CORSこれにより、呼び出しOPTIONSごとに追加のリクエストHTTP APIが発生し、オーバーヘッドが増加します。サブドメインでこれら 2 つの Web サイトをホストしようとしましたが、まだOPTIONSリクエストが残っています。これらの余分なリクエストを取り除きたいです。

OPTIONSリクエストを削除する方法はありますか?

4

2 に答える 2

3

OPTIONS リクエストをなくす方法はありますか?

JSONPCORSの代わりに使用できます。残念ながら、JSONP は GET 要求でのみ機能するため、これはシナリオには十分ではない可能性があります (jQuery の$.ajaxメソッドにはこの制限があります)。

または、同じドメインで 2 をホストしていて、に違反していない場合はsame origin policy、通常の AJAX リクエストを使用できます。

于 2013-03-01T07:51:16.337 に答える
1

クロスドメイン リクエストを防ぐには、オリジン ドメインとターゲット ドメインがまったく同じである必要があります: ホスト、ドメイン、およびポート (同じオリジン ポリシー)。ただし、とにかく CORS を防ぐためのオプションがいくつかあります。

  1. ウェブサイトと API を同じドメインに配置する - ちょっと明白 ;)
  2. ある種のサーバーサイド プロキシ スクリプト (PHP、Node.js、または好きなもの) を作成し、curl または API に似たものを介してリクエストをルーティングします。これにより、OPTIONS ヘッダーが回避されるはずですが、別の HTTP 要求 (AJAX <-> Web サイト httpd <- > API httpd) が必要になります。
  3. 同様の解決策は、Apache をリバース プロキシとして使用することです ( howto here )。スクリプト ソリューションと同様に、これも 2 つの HTTP 要求になりますが、リバース プロキシのほうがオーバーヘッドが少ないと思います。
  4. JSONPを使用することもできますが、API はそれをサポートする必要があり (そのため、Web サイト <->API 通信を再実装する必要がある場合があります)、APIはもう RESTfulではありません (気にする場合)。

スクリプト ソリューションはあまりにも不器用なので、方法 1 または方法 3 のいずれかを選択します ;) また、API と Web サイトを異なるドメインで実行する必要があるかどうかを確認することもお勧めします。通常、OPTIONS ヘッダーはあまりオーバーヘッドを引き起こさないため、最初にコードの他の部分を最適化することを検討してください。

Web サイトと API を 1 つのドメインに配置し、API のデータベースのみを別のサーバーに配置することはできますか? ただのアイデア...

于 2013-03-01T08:05:58.160 に答える