【问题标题】:How to know the request is preflight and not the actual request?如何知道请求是预检而不是实际请求?
【发布时间】:2017-03-16 10:49:24
【问题描述】:
我正在使用 CORS 将数据发送到位于另一个域中的服务器。
浏览器发送第一个请求以检查服务器(预检),然后发送主请求。我想知道请求什么时候被“预检”,所以我可以更快地返回标头。
我想要这样的东西:
if (isPreflight) {
header('Access-Control-Allow-Origin: *');
exit;
} else {
// handle the main request
}
【问题讨论】:
标签:
javascript
php
cors
cross-domain
【解决方案1】:
找到了一种方法来做到这一点。
只需将 CORS 标头放在“处理数据方法”之前,如果请求方法是 OPTIONS(这是默认的预检方法),则退出脚本,如果它是可接受的方法之一(GET、POST 或任何其他方法)否则),处理数据。
header('Access-Control-Allow-Origin: *');
if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
exit;
} else {
/*handle data*/
}