某些mac机器浏览器上的Angularjs CORS问题

时间:2015-07-15 15:09:15

标签: javascript angularjs node.js macos google-chrome

我们有前端使用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

在失败的机器中,服务失败

1 个答案:

答案 0 :(得分:1)

某些浏览器会针对您的帖子请求发出预检请求,因为 您的请求标头中的内容类型似乎为空。请将内容类型设置为以下内容之一:

  • application / x-www-form-urlencoded
  • 的multipart / form-data的
  • 文本/纯

除了以上Content-type设置为请求标题之外,浏览器还会为post方法发出预检请求。

要了解有关“预检请求”的更多信息,请查看以下链接以获取更好的信息。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests