使用AngularJS调用RESTFUL API。AngularJS在CORS预检响应后未发送请求
在IOS上使用Chrome浏览器时,CORS预检请求(选项请求)Accept
标头设置为*/*,image/webp
。响应恢复正常,但实际的GET请求永远不会被发送。正如你在响应中看到的,Content-Type
头文件被设置为image/webp
,我怀疑这会导致AngularJS中的问题随GET请求一起前进。
我的假设是否正确?如果是这样,是否强制服务器将Content-Type
设置为其他内容的解决方案?
完整请求报头:
OPTIONS http://www.example.com:8080/resourceABC HTTP/1.1
Host: www.example.com:8080
Connection: keep-alive
Access-Control-Request-Headers: accept, authorization, origin
Access-Control-Request-Method: GET
Origin: http://www.example.com
Accept: */*,image/webp
Referer: http://www.example.com/
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.67 Mobile/12B411 Safari/600.1.4
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
完整响应头:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET,OPTIONS,HEAD
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: X-HTTP-Method-Override, Content-Type, x-requested-with, authorization, accept
Access-Control-Max-Age: 3600
Content-Type: image/webp
Content-Length: 0
Date: Wed, 29 Oct 2014 19:26:37 GMT
我有这个相同的问题,我没有修复,你有没有设法解决这个问题? – Skintkingle 2015-10-22 16:36:00
那么,我不清楚错误在哪里,无论是使用Spring还是Chromium。我记录了铬缺陷429507,但没有真正遵循。我结束了解决问题服务器端,这里做这个破解:(伪代码) if(method ==“OPTIONS”&& header ==“Accept”){header.contains(“image/webp”) ){ headers.remove(“Content-Type”); headers.add(“Content-Type”,“text/plain”); } } – Marc 2015-10-23 18:58:23