2

app.ourdomain.com/store で動作するバックボーン アプリを作成しています。

API に組み込まれている HTTP 認証を使用して、api.ourdomain.com/ourApi のデータにアクセスしたいと考えています。

現在、私が理解しているAccess-Control-Allow-Origin: *ように、このクロスオリジンのサポートを許可するには、応答に CORS ヘッダーが必要です。

ただし、これは IE8/9 では機能しません。私は簡単に追加できるSOと他の場所を読みましたが$.support.cors = true;、これは魔法のようにIE8/9で動作し始めます。

このプロジェクトに深く入り込む前に、実際の経験を持つ誰かがこれに答えてくれることを願っています。

プリフライト OPTIONS リクエストを処理するように API をコーディングし、クロスオリジン リクエストを許可する場合、このオーバーライドを$.supportオブジェクトに追加すると、すべての HTTP 動詞 (PUT/DELETE を含む) へのフル アクセス、認証機能を取得できますか? 、および IE8/9 にカスタム ヘッダーを含めます (XMLHttpRequest を使用する最新のすべてのブラウザーで行うように)?

この記事XDomainRequestでは、 IE8/9 がこれらの種類のリクエストに使用するオブジェクトの制限/制限について説明します。私は、次のように述べている #3 と #5 に特に関心があります。

#3: No custom headers may be added to the request

カスタム ヘッダーを使用して、リクエストを行っている CustomerID を示します。

#5: No authentication or cookies will be sent with the request

最初のリクエストでは HTTP 認証を使用してユーザーを認証し、後続のリクエストでは元のリクエストで返された access_token を使用します。

現在、IE8/9 のサポートが義務付けられているため、サブドメイン A でプロキシ API を作成してサブドメイン B のデータにアクセスするなどのばかげたことをしない限り、Backbone を使用してシステム上の別のサブドメインにデータを要求することはできないということですか?

乾杯。

4

2 に答える 2

3

あなたの評価は正しいように聞こえます。残念ながら、IE8/9 で CORS を使用する場合、カスタム ヘッダー、追加のメソッド、または Cookie に対する回避策はありません (IE10 はこれらを完全にサポートする必要があります)。

プロキシ サーバーは 1 つのオプションです。もう 1 つのオプションは、リモート ドメインで html ページをホストし、この HTML ページを呼び出しページの iframe に含め、window.postMessageiframe と呼び出しページの間で対話するために を使用することです。iframe ページは API と同じドメインにあるため、XHR を使用して同一オリジンのリクエストを作成し、window.postMessage.

この「iframe プロキシ」メカニズムでは、特に iframe ページをホストするために、subdomainB でハッキングが必要です。ただし、純粋な HTML/JavaScript ベースのソリューションであるため、本格的なプロキシ サーバーよりも優れている場合があります。IE8/9 にはまだいくつかの制限があることに注意してくださいpostMessage(ただし、iframe には影響しないようです)。この「iframe プロキシ」メカニズムの説明は、次の場所にあります。

于 2013-01-18T20:47:33.530 に答える