0

私は現在、クロスドメインの ajax リクエストを送信する必要があるいくつかの作業に取り組んでいます。jQuery 1.7.2 と Resteasy を使用しています。これが私のajaxリクエストです:

 $.ajax({
    url: Configuration.AjaxUrlPrefix + "/rest/conf/saveoption",
    data: {
        save_option: JSON.stringify(optionData)
    },
    type: "POST",
    dataType: 'text',
    success: success,
    error: fail,
    cache: false
});

そして、インターセプターを使用して、残りの応答にいくつかのヘッダーを追加します。

@Provider
@ServerInterceptor
public class CrossDomainInteceptor implements PostProcessInterceptor
{

    @Override
    public void postProcess(ServerResponse response)
    {
        MultivaluedMap<String, Object> metadata = response.getMetadata();
        metadata.add("Access-Control-Allow-Origin", "*");
        metadata.add("Access-Control-Allow-Methods", "*");
        metadata.add("Access-Control-Max-Age", "*");
        metadata.add("Access-Control-Allow-Headers", "*");
    }

}

Chrome と FF では問題なく動作しますが、IE8 と IE9 では動作しません。また、IE 開発者ツールにエラーは表示されませんでした。誰でも私を助けることができますか?

4

1 に答える 1

1

IE8-9 はXDomainRequestクロスドメインの ajax リクエストを起動するために使用する必要があり、jQueryはそれをネイティブにサポートしていません。jQueryバグ トラッカーでチケットを見つけました: http://bugs.jquery.com/ticket/8283

jQuery チームはXDomainRequestajax インターフェイスと完全に互換性がないと考えているため、サポートしないことにしましたが、プラグインが役立つ場合があります: https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js

xdr トランスポートにはいくつかの制限があることに注意してください。上記の jQuery チケットの説明を確認してください。

于 2012-07-25T06:31:39.110 に答える