避免跨域OPTIONS请求

时间:2014-09-16 20:14:32

标签: apache cross-domain

我的前端代码和api代码项目如project.com for frontend和api.project.com for api。

因为我已经配置了apache来接受跨域请求,所以浏览器接受调用不同的url,但它也会在每个GET请求之前用OPTION请求调用api。

我该如何避免OPTION请求?

我只为交叉域配置添加了以下参数;

Header set Access-Control-Allow-Origin '*'

3 个答案:

答案 0 :(得分:2)

自定义Content-Type(application / json)实际上是在触发预检。根据CORS规范(http://www.w3.org/TR/cors/),除application / x-www-form-urlencoded,multipart / form-data或text / plain之外的任何Content-Type都会触发预检。

一旦浏览器收到这些标题,它就会发出实际请求。您可以在此处了解有关CORS预检请求的更多信息:

http://www.html5rocks.com/en/tutorials/cors/

答案 1 :(得分:0)

如果设置自定义请求标头,XMLHttpRequest将仅为GET请求发送preflight options request。停止尝试设置自定义请求标头。

答案 2 :(得分:0)

我不确定这是否对您有所帮助 - 但您可以在apache配置中禁止OPTION请求。

请参阅:http://httpd.apache.org/docs/2.2/mod/core.html#limit

<Location /your/context>

  <Limit OPTIONS>
    Allow from x.y.z
    Deny from all
  </Limit> 

...
</...>