允许在选项请求中使用凭据所需的更改

时间:2015-09-18 16:37:47

标签: ajax servlets xmlhttprequest cors credentials

我一直在努力满足CORS要求,在我的选项请求中将allowCredentials标志设置为true。我发现在响应头Access-Control-Allow-Origin中需要精确匹配请求源的域(而不仅仅是外卡)。但是,我做了这个更改,但仍然收到此错误:

“XMLHttpRequest无法加载。当凭证标志为true时,不能在'Access-Control-Allow-Origin'标头中使用通配符'*'。因此不允许原点访问。”

以下是我的标题:

Response Headers
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:accept, content-type
Access-Control-Allow-Methods:HEAD,POST,GET,OPTIONS
Access-Control-Allow-Origin:http://<MyOrigin>
Access-Control-Max-Age:600
Allow:HEAD,POST,GET,OPTIONS
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:20
Content-Type:<MyContentType>
Date:Fri, 18 Sep 2015 16:19:30 GMT
Keep-Alive:timeout=5, max=99
Server:Apache
Vary:Accept-Encoding

Request Headers
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:<MyLanguages>
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Connection:keep-alive
Host:<MyOrigin>
Origin:http://<MyOrigin>
Pragma:no-cache
Referer:http://<MyOrigin>?<MyRequest>
User-Agent:<MyUserAgent> 

如您所见,我的Access-Control-Allow-Origin 不是通配符。我需要做些什么其他更改来阻止这些错误?

另外,我在Chrome和Safari中都有这个,所以我不认为这是浏览器特定的问题

1 个答案:

答案 0 :(得分:0)

必须在对OPTIONS配对的POST响应中正确设置access-control-allow-origin标头,而不仅仅是对OPTIONS请求的响应。