使用AngularJS调用RESTFUL API。
在IOS上使用Chrome浏览器时,CORS预检请求(OPTIONS请求)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
答案 0 :(得分:1)
HY。 我在AngularJS-Service的不同域上访问REST服务时也有同样的事情。
检查发送到我的REST服务的请求标头,看看我是否允许从客户端请求的所有内容导致以下内容:
设置'访问控制 - 允许 - 标题'以确保它包含“访问控制 - 请求 - 标题”中的所有项目的方式。为我解决了。
Marc我在您的“访问控制 - 请求 - 标题”中看到了这一点。标题"起源"请求,但在您的"访问控制允许标题"它不见了。
在我的情况下发送以下Response-Headers( appkey是我在标题中的内部auth-key ):
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
Access-Control-Allow-Headers: appkey,content-type
希望这很清楚,这有帮助。 最好的祝福, 基督教
P.S。:"访问控制允许标题:*"在我的情况下不起作用
<强>更新强>
要通过POST-Request允许表单提交,我必须添加&#39; content-type&#39;到访问控制允许标题&#39;