3

ローカルホストでホストされているWebサービスを呼び出そうとしています。このAJAX呼び出しは私のために機能し、「Authorization」トークンがサービスへのリクエストのヘッダーで送信されているのを見ることができます。

    $.ajax({
        type: method,
        url: serviceUrl,
        beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization",  Token); },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        ProcessData: true,
        cache: false,
        success: successHandler,
        error: errorHandler
    });

しかし、今回はAzure Cloudでホストされているサービスを呼び出そうとしましたが、同じAJAX呼び出しは機能しますが、ヘッダーコンテンツは送信されません。fiddlerを使用してリクエストのヘッダーコンテンツを検査しています。ヘッダーに「Authorization」トークンを含めるためにできることはありますか?

4

2 に答える 2

2

クロスドメイン ポリシーの制限である可能性があります。ajax 呼び出しとサービスが同じドメイン内にあることを確認する必要があります。そうしないと、機能させるために少しハッキングする必要があります。

于 2012-11-21T18:24:14.417 に答える
0

クロスドメインAJAX呼び出しを防ぐために、ブラウザレベルでセキュリティポリシーがあります。これには複数の回避策があります(JSONの代わりにXMLを使用したり、このjQueryプラグインを使用したりするなど)が、最も「正しい」のはJSONの代わりにJSONPを使用dataTypeすることです。これは、AJAX呼び出しでを変更するだけで実行できると思います。

$.ajax({
    //...etc.
    dataType: "jsonp",
    //...etc.
});

それが問題ではない場合は、ハンドラーに追加return true;してみてください。が返されるとリクエストはキャンセルされますが、値がまったく返されない場合はどうなりますか。beforeSendfalse

于 2012-11-21T18:33:27.803 に答える