2017-06-13 15:14:34 5629次浏览 3条回答 2 悬赏 20 金钱

在控制器里的behaviors方法是这样的

public function behaviors()
    {
        return [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
                'cors' => [
                    'Origin' => ['http://www.d1.com', 'http://d2.com', 'http://www.d3.com'],
                    'Access-Control-Request-Method' => ['POST'],
                    'Access-Control-Request-Headers' => ['*'],
                    'Access-Control-Allow-Credentials' => true,
                    'Access-Control-Max-Age' => 86400,
                    'Access-Control-Expose-Headers' => [],
                ],

            ],
        ];
    }

我这里的配置是不是正确的,有谁能帮助一下

补充于 2017-06-13 15:18

浏览器提示这样的信息:已拦截跨源请求:同源策略禁止读取位于 http://xxx.com/index.php?r=site/index 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

补充于 2017-06-13 18:55

多谢各位的回答,你们所说的方法,我都试过了,之后找到了这个方法,可以解决此问题,上源码分享给大家。

public static function allowedDomains()
    {
        return [
            '*'
        ];
    }

    public function behaviors()
    {
        return array_merge(parent::behaviors(), [
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
                'cors' => [
                    'Origin' => static::allowedDomains(),
                    'Access-Control-Request-Method' => ['POST'],
                    'Access-Control-Allow-Credentials' => true,
                    'Access-Control-Max-Age' => 86400,

                ],
            ],
        ]);
    }
  • 回答于 2017-06-13 15:54 举报

    你是会员登陆状态么?还是?

  • 回答于 2017-06-13 15:57 举报

    给你个思路,用Chrome -> inspect element-> Net 抓下包看看 Options请求返回的Head里是哪些内容

    搭配postman 调试

    字面上看应该配置的没错,就是不知道 Origin 关键词对不对,是不是应该改成 Access-Control-Allow-Origin,或者对应的值是 string 还是 array

    PS 可以直接配置 Access-Control-Allow-Origin = * 调通以后再改回域名

  • 回答于 2017-06-13 16:12 举报

    没试过。。。。。。。。。

您需要登录后才可以回答。登录 | 立即注册
xiaoen
副总裁

xiaoen

注册时间:2015-03-26
最后登录:2019-12-31
在线时长:38小时55分
  • 粉丝6
  • 金钱7390
  • 威望0
  • 积分7770

热门问题