私はインターネットでいくつかの調査をしましたが、私はこの件について完全な画像を得ることはできませんでした。誰でもこの答えを今と永遠に解決するのを助けることができますか?ドメイン間のjson要求でヘッダを設定することはできますか?
これは私がこれまでに見つかったものです:
- JSONPとのクロスドメインの呼び出しを行うことが可能です。 jsonp呼び出しでヘッダーを変更することは許可されていません。
- jsonとのクロスドメインコールは、サーバーが許可している場合は可能です。
これは私が何をしようとしていますものです:
$.ajax({
type: "GET",
crossDomain: true,
beforeSend: function (request) {
request.setRequestHeader("Authorization", "Bearer " + ($("#accesstoken").val()));
},
contentType: "application/json; charset=utf-8",
url: myJSonServer + encodeURI(operation),
dataType: 'json',
cache: false,
success: callback,
error: function (jqXhr, textStatus, errorThrown) { alert(textStatus + ": " + errorThrown); }
});
これは何が起こっているかである。
- myJSonServerが同じドメイン上にある場合、すべての で問題はありません
- myJSonServerが別のドメインにある場合、要求は送信されますが、ベアラヘッダーはありません。
このベアラヘッダーは、oAuth2標準の一部です。
私はブラウザでaccessTokenを設定して、これが最善の解決策ではない可能性があることを認識しています。そして私はこの状況のためにプロキシを使うことができることを知っています。
クロスドメインのjsonリクエストでヘッダーを設定することができますか、それとも可能になるのか不思議です。
おかげ
- 問題は、私はMVC4を使用していたし、web.configファイルにcrossDomainScriptAccessEnabled = "true" を追加
を解決しました。私はこれで十分だと思ったが、apsillersの答えが私の問題を解決した。私は今、私のweb.configファイルでこれを追加しました:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Authorization" />
</customHeaders>
</httpProtocol>
</system.webServer>
[cross-origin 'Authorization'-header with jquery.ajax()](http://stackoverflow.com/questions/9559947/cross-origin-authorization-header-with-jquery-ajax)の可能な複製。 – apsillers