私はインターネットでいくつかの調査を行いましたが、この主題についての全体像を把握することはできませんでした。誰かが今そして永遠にこの答えを解決するのを手伝うことができますか?
これは私がこれまでに見つけたものです:
- 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が別のドメインにある場合、リクエストは送信されますが、Bearerヘッダーはありません
このBearerヘッダーは、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>