我在互联网上进行了一些研究,但我没有设法获得有关该主题的完整图片。任何人都可以帮助现在和永远解决这个答案吗?
这是我到目前为止发现的:
- 可以使用 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>