我在互联网上做了一些研究,但我没有设法得到关于这个主题的完整图片.现在和永远都可以帮助解决这个问题吗?
这是我到目前为止发现的:
这就是我想要做的:
$.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) 我有一个用Laravel,Dingo和JWT Tokens驱动的API.使用PAW测试API调用非常有效.使用jQuery运行API调用而没有中间件JWT令牌禁用工作正常.但是当我尝试使用JWT Tokens运行Ajax请求时,我得到401.
我错过了Ajax请求的技巧.你能看到这段代码有问题吗?
$.ajax({
url: "http://api.domain.app/products",
dataType : 'jsonp',
type: 'GET',
beforeSend : function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Bearer XXXX");
},
error : function() {
// error handler
},
success: function(data) {
console.log(data);
return data;
}
});
Run Code Online (Sandbox Code Playgroud)
由于Cross Domain,我不得不使用jsonp.但是,这一点在JWT中间件上工作得很好.
希望你能指教..
我有两个域。我正在尝试通过另一个域上的页面从一个域访问 JSON 对象。我已经阅读了有关此问题的所有内容,但仍然无法弄清楚。
提供 JSON 服务的域具有以下设置:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, OPTIONS"
Header set Access-Control-Allow-Headers "origin, authorization, accept"
Run Code Online (Sandbox Code Playgroud)
从我的其他域,我调用以下内容:
$.ajax({
type:'get',
beforeSend: function(xhr) {
var auth = // authentication;
xhr.setRequestHeader("Authorization", "Basic " + auth);
}
url:myUrl,
dataType:'json',
error: function(xhr, textStatus, errorThrown) { console.log(textStatus, errorThrown); }
})
Run Code Online (Sandbox Code Playgroud)
我知道“auth”已正确初始化(记录并检查)。然而,这是行不通的。在 Firefox 的控制台中,我得到请求 URL:...
Request Method:
OPTIONS
Status Code:
HTTP/1.1 401 Authorization Required
Run Code Online (Sandbox Code Playgroud)
如果我去掉该beforeSend:...部分,我会看到以下内容
Request Method:
GET
Status Code:
HTTP/1.1 401 Authorization Required
Run Code Online (Sandbox Code Playgroud)
但是,服务 JSON 的域也可以服务 JSONP。我不想使用这个,主要是因为应用程序将在专用浏览器上不断运行,我担心这个问题。更重要的是,我真的很想知道我所做的事情到底出了什么问题。我知道出于实际目的,有多种方法可以克服 …
从我使用的JavaScript:
xhr.setRequestHeader("Authorization", make_base_auth(username,password));
Run Code Online (Sandbox Code Playgroud)
但是,HTTP请求没有Authorization标头:
OPTIONS /restService/index?_=1362589672203 HTTP/1.1
Host: myappinheroku.herokuapp.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-MX,es-ES;q=0.8,es-AR;q=0.7,es;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Origin: http://127.0.0.1:8081
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,content-type
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
似乎完全忽略了身份验证.怎么了?我们如何为CORS启用身份验证?
这是服务器对上述请求的响应:
HTTP/1.1 401 Full authentication is required to access this resource
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: origin, authorization, accept, content-type, x-requested- with
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Server: Jetty(7.x.y-SNAPSHOT)
Set-Cookie: JSESSIONID=6smxjnlqelmc1lg98ain16wv7;Path=/
WWW-Authenticate: Basic realm="Ralph's Bait and Tackle"
Transfer-Encoding: chunked
Connection: …Run Code Online (Sandbox Code Playgroud) jquery ×3
ajax ×2
cors ×2
javascript ×2
cross-domain ×1
dingo-api ×1
http ×1
http-headers ×1
json ×1
jsonp ×1
jwt ×1
laravel ×1
oauth-2.0 ×1