Yii 和 Vue2 CORS 启用。服务器以 404 错误响应预检 OPTIONS 请求

Posted

技术标签:

【中文标题】Yii 和 Vue2 CORS 启用。服务器以 404 错误响应预检 OPTIONS 请求【英文标题】:Yii and Vue2 CORS enable. Server responds to preflight OPTIONS request with 404 error 【发布时间】:2019-08-22 18:06:08 【问题描述】:

我有两个样板示例。

首先是来自这里的 Yii2: https://github.com/m-alfan/api-yii2-boilerplate

其次是Vue2: https://github.com/cornflourblue/vue-vuex-registration-login-example

我首先在我的 Apache2 服务器上部署了 http://basic.vue2 域,客户端通过 npm 服务器在第二个域上运行。

问题是当我发送 POST 请求时,我得到了 404 选项

https://ibb.co/r6ctBHr

https://ibb.co/0mmQ44m

https://ibb.co/BZM4d7Y

有人知道如何为 Yii 配置 CORS 吗?我尝试将 cors 添加到 GuestController.php 行为()中,但它失败了。

【问题讨论】:

【参考方案1】:

404可能是一个错误的urlManager规则或缺失,你从这里开始。

【讨论】:

当我从 swagger 发送请求时它工作。所以我认为urlManager是正确的【参考方案2】:

为 yii 配置 CORS,请确保OPTIONS 动作/动词被允许。

另请参阅此处的文档:CORS config

即:

public function behaviors()

    $behaviors = parent::behaviors();

    $behaviors['corsFilter'] = [
        'class' => \yii\filters\Cors::className(),
        'cors' => [
            'Origin' => ['*'],
            'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
            'Access-Control-Request-Headers' => ['*'],
            'Access-Control-Allow-Methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
            'Allow' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
            'Access-Control-Allow-Credentials' => null,
            'Access-Control-Max-Age' => 86400,
            'Access-Control-Expose-Headers' => []
        ]

    ];
    return $behaviors;

【讨论】:

以上是关于Yii 和 Vue2 CORS 启用。服务器以 404 错误响应预检 OPTIONS 请求的主要内容,如果未能解决你的问题,请参考以下文章

在 API 上启用 CORS

无法在 asp.net 核心中为身份服务器 4 启用 CORS

如何使用 Angular 7 在 django1.1 中启用 cors?

在 Ubuntu 14.04 上配置 apache 2.4 以启用 CORS

为 Web API 1、.net 4.0 启用 CORS 中的问题

远程服务器上的 YII 2 REST CORS 问题