3

jQuery 1.7.2 を使用していますが、別のドメインに POST リクエストを送信したいと考えています。POST リクエストである必要があります。しかし、これはInternet Explorer では機能しません(IE9 で試しました)。他のすべてのブラウザで動作します。

私はこのスクリプトを持っています:

<script>
jQuery.support.cors = true;

jQuery(function() {
    $.ajax({
        crossDomain : true,
        cache: false,
        type: 'POST',
        url: 'http://someotherdomain/test.php',
        data: {},
        success: function(da) {
            console.log(JSON.stringify(da))
        },
        error: function(jqxhr) {
            console.log('fail') 
            console.log(JSON.stringify(jqxhr))
        },
        dataType: 'json'
    });
});
</script>

エラーが返されます:

{"readyState":0,"status":0,"statusText":"Error: Access denied.\r\n"}

私のPHPファイルは次のようになります。

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS');
echo json_decode(array('success' => 'yes'));
4

4 に答える 4

2

10 未満の IE で CORS をサポートするには、XDomainRequest オブジェクトを使用するように ajax メソッドを変更する必要があります。このプラグインはあなたのためにそれを行います: https://github.com/jaubourg/ajaxHooks

于 2012-09-26T20:25:17.297 に答える
2

Internet Explorer (IE9 を含む) はCORSをサポートしていません。すべてのクロスドメインリクエストをプロキシする必要があります(同じドメインのPHPスクリプトに投稿し、クエリをcurlで再投稿して応答を返します)

于 2012-05-01T09:27:58.983 に答える
1

あなたのスクリプトは正しいように見えますが、変更する必要があると思います:

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Origin: x-requested-with');

また

header('Access-Control-Allow-Origin: {Origin}');

{Origin} は Origin ヘッダーの値です。Origin が指定されている場合、「*」を入れるだけでは機能しないことを理解しています。

また、IE8 と IE9 ではこれに対するサポートが制限されていjQuery.support.cors = trueますが、これまでに行ったように を配置すると機能します。

于 2012-06-01T19:05:37.413 に答える