我们有前端使用Angularjs,我们点击apis从另一个域获取详细信息,该域使用apache服务器,另一个域用作nodejs服务器。
Whilc为两台服务器点击api,在某些mac机器中,apis在OPTIONS请求中失败了。我不明白为什么它会发生在一些机器上。
在初始调用中,它在浏览器中检查时显示失败,同时类型为xhr方法。
有人可以帮助我们解决这些问题的原因。
系统正常工作的请求标头为
请求标头 查看源 接受: / Accept-Encoding:gzip,deflate,sdch 接受语言:EN-US,EN; Q = 0.8 Access-Control-Request-Headers:accept,content-type 访问控制请求-方法:POST 连接:保持活跃 主持人:XXX.XXXXX.com 起源:http://localhost 引用者:http://localhost/XXXXX/ User-Agent:Mozilla / 5.0(Windows NT 5.1)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 43.0.2357.132 Safari / 537.36 [7/15/2015 8:20:06 PM] karthick raja:它显示了此请求标题
我们在成功机器中获得响应
但失败的系统有
请求标头 Access-Control-Request-Headers:accept,content-type 访问控制请求-方法:POST 主持人:xxxx.xxxx.xom 起源:http://localhost 引用者:http://localhost/XXXXXX/ 用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_9_5)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 43.0.2357.134 Safari / 537.36
在失败的机器中,服务失败
答案 0 :(得分:1)
某些浏览器会针对您的帖子请求发出预检请求,因为 您的请求标头中的内容类型似乎为空。请将内容类型设置为以下内容之一:
除了以上Content-type设置为请求标题之外,浏览器还会为post方法发出预检请求。
要了解有关“预检请求”的更多信息,请查看以下链接以获取更好的信息。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests