我有一个包含前端代码和api代码的项目,比如前端的project.com和api的api.project.com。
因为我已经将apache配置为接受跨域请求,所以浏览器接受调用不同的url,但它也在每个GET请求之前使用OPTION请求调用api。
如何避免OPTION请求?
我只添加了以下参数用于跨域配置;
Header set Access-Control-Allow-Origin '*'
自定义内容类型(application/json)实际上是在触发预飞行。根据CORS规范(http://www.w3.org/TR/cors/),除application/x-www-form-urlencoded、multipart/form-data或text/plain之外的任何内容类型都会触发预检。
一旦浏览器收到这些头,它就会发出实际的请求。您可以在这里了解更多关于CORS飞行前请求的信息:
http://www.html5rocks.com/en/tutorials/cors/
XMLHttpRequest只会在设置自定义请求头的情况下发送GET请求的preflight选项请求。停止尝试设置自定义请求标头。
我不确定这是否对您有帮助,但您可以在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>
...
</...>