fan*_*dee 8 javascript json cross-domain http-headers oauth-2.0
我在互联网上做了一些研究,但我没有设法得到关于这个主题的完整图片.现在和永远都可以帮助解决这个问题吗?
这是我到目前为止发现的:
这就是我想要做的:
$.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); }
});
Run Code Online (Sandbox Code Playgroud)
这就是发生的事情:
此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>
Run Code Online (Sandbox Code Playgroud)
aps*_*ers 11
使用JSONP,无法设置自定义标头.
使用CORS,服务器必须发送Access-Control-Allow-Headers标头以允许来自客户端的不常见请求标头.来自HTML5 Rocks CORS页面:
Access-Control-Allow-Headers... - 支持的请求标头的逗号分隔列表.
因此,您的服务器必须发送一个Access-Control-Allow-Headers: Authorization让浏览器知道允许Authorization使用该请求发送到服务器.如果没有此服务器标头,浏览器将只发送一些带有请求的公共标头,而忽略其余标头.