ZF2中的CORS POST请求变成OPTIONS请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZF2中的CORS POST请求变成OPTIONS请求相关的知识,希望对你有一定的参考价值。

Zend Framework 2中是否总有允许我的API使用CORS?

我已经允许所有来源header("Access-Control-Allow-Origin: *");

每次发送POST请求带有标头服务器都会响应405。

在我的访问日志上,我看到请求实际上是OPTIONS

答案

因此,从您的php脚本开始应进行以下检查:

// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
    header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}

一旦执行此操作,就会启用CORS。

另一答案

是-扩展控制器类中的endMvcControllerAbstractRestfulController::options方法。默认情况下,它返回405,这可能是您看到该响应的原因。

可以通过endHttpHeaders::addHeaders设置标题

注:由于Zend Framework已成为Laminas,因此“ Zend”当前为“ Laminas”。

以上是关于ZF2中的CORS POST请求变成OPTIONS请求的主要内容,如果未能解决你的问题,请参考以下文章

CORS 中的POST and OPTIONS 请求

post 变成option 请求的三种原因

关于CORS

Haskell Yesod - 执行 POST 请求时浏览器 OPTIONS 请求的 CORS 问题

浏览器向 django 发出 CORS 请求的 OPTIONS 请求,但没有 POST

CORS:成功 OPTIONS 请求后,Firefox 不发送 POST 请求……在 Chrome 中有效