3

以下のようなドメインがあります。

以下のように、その中に2つのサブドメインがあります。

http://foo.jayshit.info

http://bar.jayshit.info

foo.jayshit.info から bar.jayshit.info への jQuery ajax 呼び出しを行い、html を取得したり、データをサーバーに更新したりしたいと考えています。

同じオリジンポリシーのため、それほど簡単ではないことはわかっています。JSONPも使いたくありません。以下のように、ajax呼び出しにasync: falseを持たせたいからです。

$.ajax({
    type: "POST",
    cache: false,
    url: tURL,
    data: tData,
    async: false
});

誰かがこれに対する回避策に出くわした場合はお知らせください。

前もって感謝します。

よろしく、

4

5 に答える 5

5

あなたは他のサブドメインを管理しているため、bar.jayshit.info からこのヘッダーを送信できます。

Access-Control-Allow-Origin: http://foo.jayshit.info
Access-Control-Allow-Methods: GET, POST

最新のブラウザーはこれらのヘッダーを尊重し、リクエストを行うことができます。XDomainRequestIE8 の場合、jQuery でサポートされていないものを使用する必要があります。

于 2012-07-19T11:44:30.717 に答える
0

使用する

dataType: "jsonp"

...

$.ajax({
    type: "POST",
    dataType: "jsonp",
    cache: false,
    url: tURL,
    data: tData,
    async: false
});

より詳しい情報:

http://api.jquery.com/jQuery.ajax/

于 2012-07-19T11:48:11.990 に答える
0

コードに次を追加することをお勧めします。

jQuery.support.cors = true;

詳細については、このリンクを参照してください

于 2012-07-19T11:48:41.443 に答える
0

答えは、CORS と JSONP の両方です。IE はまだ CORS をサポートしていません。IE10 がそれを取得するまで待つ必要があります。JSONP では、POST、PUT、および DELETE ではなく、クロスドメイン GET のみを実行できます。CORS はこれらの問題を解決し、他のすべてのブラウザーでサポートされています。

これを解決できるもう 1 つの方法は、サーバーからの呼び出しを行うプロキシを Web サイトに構築することです。これにより、ブラウザーのクロスドメインの問題を回避できます。これらは、疑問に思った場合のセキュリティ対策として用意されています。

于 2012-07-19T13:00:44.323 に答える
0

http://foo.jayshit.infohttp://bar.jayshit.infoは 2 つの異なるドメインであるため、クロス ドメイン リクエストが必要です。Google からの最初のリンク: http://james.padolsey.com/javascript/cross-ドメイン-リクエスト-with-jquery/

于 2012-07-19T11:47:40.123 に答える