Javascript 无法使用jQuery读取CORS请求的响应头
我有一个正在工作的跨域web服务调用,可以从中获取有效负载,但我无法读取响应中的标题。Chrome可以在请求中显示标题,但在jQuery的成功处理程序中不可用Javascript 无法使用jQuery读取CORS请求的响应头,javascript,jquery,cors,Javascript,Jquery,Cors,我有一个正在工作的跨域web服务调用,可以从中获取有效负载,但我无法读取响应中的标题。Chrome可以在请求中显示标题,但在jQuery的成功处理程序中不可用 var data_obj = { "userName": "myUser", "password": "000000" } $.ajax({ type: "POST", url: 'https://localhost:8443/AuthService.svc/auth', contentType: "applic
var data_obj = { "userName": "myUser", "password": "000000" }
$.ajax({
type: "POST",
url: 'https://localhost:8443/AuthService.svc/auth',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data_obj),
dataType: "json",
success: function(data, textStatus, jqXHR) {
console.log(jqXHR.getAllResponseHeaders());
}
});
唯一记录到控制台的是:
内容类型:application/json;字符集=utf-8
以下是Chrome报告的选项和POST响应标题,请注意,我正试图通过访问控制公开标题来公开Foo
和授权
:
选择权
职位
有人能理解为什么我只能在成功回调中访问内容类型
标题吗
更新
注意:我重构了上述内容以使用XMLHttpRequest
,该行为仍然存在。您的响应标题中有一个输入错误:
访问控制公开标题:内容类型、Foo、授权
“访问”中有三个“c”。我承认我花了太长时间才注意到
虽然我没有Chrome(只有Firefox),但我尽可能地复制了您的请求,并修复了输入错误,返回了以下信息:
Foo:Bar
授权:自定义\u访问\u令牌=某些\u令牌
内容类型:text/html;字符集=utf-8
补遗
看到另一个答案是建议您使用带有凭据的,,如果您出于某种原因这样做,请记住访问控制允许源站
必须与浏览器可能自行设置的源站
请求头匹配,并且不能是通配符。我把这个放在这里是为了避免另一个可能的问题
origin参数指定可以访问资源的URI。浏览器必须强制执行此操作。对于没有凭据的请求,服务器可以将“*”指定为通配符,从而允许任何来源访问资源
请参见我的选项和帖子回复都包括访问控制允许来源:
如果这是您的意思。是的,我知道这是一种不好的做法:)是的,这是一个CORS请求,但为了清楚起见,我修改了我的标题。Doh-也修改了。用XMLHttpRequest确认了同样的行为。@hyphenbash我不确定在没有飞行前如何执行CORS请求。。。我的理解是,当浏览器检测到您提出跨域请求时,它会自动执行预飞行。我回答了,因为我认为这是问题所在。否则我不会浪费一个答案。
Acccess-Control-Expose-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Methods:POST, PUT, DELETE
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Content-Length:0
Date:Mon, 20 Jul 2015 16:26:00 GMT
Foo:Bar
Acccess-Control-Expose-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Origin:*
Authorization: custom_access_token = some_token
Content-Length:36
Content-Type:application/json; charset=utf-8
Date:Mon, 20 Jul 2015 16:26:00 GMT
Foo:Bar