1

jqueryを使用してサーバーにデータを投稿しています.サーバーはデータを受信しましたが、クロムにはまだエラーが表示されます:

XMLHttpRequest cannot load `myServer:63373/api/sendData`. Origin `myServer:63385` is not allowed by Access-Control-Allow-Origin. 

ここに私のjsコードがあります:

 $.ajax({
            type: 'POST',
            url: 'myServer:63373/api/SendData',
            crossdomain: true,
            async: true,
            data: myData,
            dataType: 'json',
            success: function(){ alert('success'); }
        });

奇妙なことに、リクエストの後に「成功」​​が表示され、サーバーはデータを受信しましたが、コンソールにエラー メッセージが表示されます。このメッセージを回避する方法はありますか?

4

3 に答える 3

0

状況が

  • スクリプトは別のサーバーでホストされています

  • またはサブドメイン

  • または、別のポートで URL をヒットしてみてください

これはクロスドミアンのリクエストです。jquery はクロスドメイン リクエストを実行できません。

これが問題である場合は、この「jsonp」に jsonp を使用して、クロス ドメイン リクエストを許可する必要があります。

jsonpを使用してこれを実行してみてください。

jsonp の場合、すべての呼び出しにコールバックがあるということは、url に値が存在することを意味し、この呼び出しで応答を php に送信する必要があります。

これを試してください:-

$.ajax({
        type: 'POST',
        url: 'myServer:63373/api/SendData',
        crossdomain: true,
        async: true,
        data: myData,
        dataType: 'jsonp',
        success: function(){ alert('success'); }
    });

そしてphpで

wrap your response in  $_GET['_callback']."(".$response.")"; and echo it

json で応答を取得します。

于 2013-09-25T09:46:25.120 に答える
0

「Access-Control-Allow-Origin で許可されていません」が理由です。簡単に言えば、通常、JavaScript が含まれている Web ページのドメイン/ポート/プロトコルとは異なるドメイン/ポート/プロトコルに対して XHR 呼び出しを行うことはできません。

最新のブラウザでは、サーバー管理者の許可を得て、これを回避できます。

XHR2 API ( http://www.html5rocks.com/en/tutorials/cors/ )を使用して Ajax リクエストを行います。

サーバー側では、次のヘッダーを発行して、JavaScript を含むページを提供するドメインからのアクセスを許可する必要があります。

Access-Control-Allow-Origin: http://your-page-domain.com
Access-Control-Allow-Credentials: true
于 2013-09-25T09:43:05.900 に答える