0

私は現在2つのサイトを持っています。1 つはトークンを持ち、もう 1 つはユーザーがそのトークンを使用して何かを実行できるようにするものです。トークン mySite.local/services/session/token を持つ最初のサイトにアクセスすると、次のように表示されます: OTV4Gu9VQfjIo2ioQ0thajdEJ6nEINoxsLuwgT_6S0w

このトークンを取得するはずのページにいると、空の応答が返され、ajax 関数のエラーがスローされます。

奇妙な部分は、firebug で問題を調査すると、ajax リクエストの応答が 43B であることがわかります。これは、トークンと同じサイズです。そのため、何らかの理由でトークンを含むページが適切にヒットされていますが、応答が来ていません。

firebug 応答のスクリーンショットを次に示します。 ここに画像の説明を入力

そして、ここに ajax リクエストを含む JQuery があります。

var nid; //global node id variable
  $('html').click(function(){
    try {
      $.ajax({
        url:"http://mySite.local/services/session/token",
        type:"get",
        dataType:"text",
        error:function (jqXHR, textStatus, errorThrown) {
          alert('error thrown - ' + errorThrown);
          console.log(JSON.stringify(jqXHR));
          console.log(JSON.stringify(textStatus));
          console.log(JSON.stringify(errorThrown));
        },
        success: function (token) {
          //Do some stuff now that token is received
        }
      });
    }
    catch (error) {
      alert("page_dashboard - " + error);
    }
  });
4

1 に答える 1

1

Javascript などのクライアント側/ブラウザ言語によって行われるすべての要求は、同じドメイン名と同じプロトコルを使用して、同じポート上で行う必要があることを本質的に述べている、 Same Origin Policyへの実行。あなたの場合http://mysitemobile.localは等しくないhttp://mysite.localので、リクエストはブロックされています。Firebug の表示方法は 43 バイトで無応答です。

これを回避するには、クロスオリジン リソース共有 (CORS)またはJSONPの 2 つの方法があります。CORS は、リクエスト先のサーバーに追加される HTTP ヘッダーであり、同じオリジン ポリシーを破ることが許可れている許容可能なドメインのホワイトリストを提供します。最近のブラウザのほとんどは、このヘッダーをサポートしています。

<script>もう 1 つのオプションは JSONP で、通常はタグを使用して呼び出される Javascript 関数に JSON オブジェクトをラップします。他のサーバーが戻ってきて、リモートサーバーがラップするコードで{status: 0}呼び出された関数がある場合、同じオリジンポリシーについて心配することなく関数を呼び出すことができます。parseStatus()parseStatus({status:0});

于 2013-07-03T16:37:37.357 に答える