我已经在互联网上进行了一些研究,但没有设法获得有关该主题的完整图片。任何人都可以暂时解决这个问题吗?
这是我到目前为止发现的:
这就是我想要做的:
$.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); } });
这是正在发生的事情:
该Bearer标头是oAuth2标准的一部分。
我知道以下事实:不是在浏览器中设置accessToken的最佳解决方案。我知道我可以针对这种情况使用代理。
我只是好奇是否有可能在跨域json请求上设置标头? 谢谢
我正在使用MVC4,并在web.config中添加了crossDomainScriptAccessEnabled =“ true”。我以为就足够了,但是用a药的答案解决了我的问题。我现在在我的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>
使用JSONP时,无法设置自定义标头。
使用CORS,服务器必须发送Access-Control-Allow-Headers标头,以允许来自客户端的不常见请求标头。在HTML5 Rocks CORS页面中:
Access-Control-Allow-Headers
Access-Control-Allow-Headers …-受支持的请求标头的逗号分隔列表。
因此,您的服务器必须发送,Access-Control-Allow-Headers: Authorization以使浏览器知道允许Authorization随请求一起发送到服务器。如果没有此服务器标头,浏览器将仅随请求发送一些通用标头,而忽略其余标头。
Access-Control-Allow-Headers: Authorization
Authorization