数字派

数字派

我就是个数字派,我有无限的可能,但是我不会陷入循环。

  • 财富值1515
  • 威望值10
  • 总积分2135

个人信息

  • 2019-01-16 已签到
    连续签到1天,获得了5个金钱
  • 2019-01-03 已签到
    连续签到1天,获得了5个金钱
  • 2019-01-01 已签到
    连续签到2天,获得了10个金钱
  • 2018-12-31 已签到
    连续签到1天,获得了5个金钱
  • 2018-12-28 已签到
    连续签到1天,获得了5个金钱
  • 2018-12-26 已签到
    连续签到1天,获得了5个金钱
  • 回复了 的回答

    beforeRequest也可以,这个拦截的更早

    不只是拦截,还得返回一些头信息,而这些头信息,所有请求都需要。

  • 回复了 的回答

    这个简单,其实如果你的应用不是针对全世界广大群众的,那么就不用那么限制Origin。

    header('Access-Control-Allow-Origin:*');
    

    PHP这边只要把客户端需要的关键几个header准备好就行,无论是不是发送options请求都
    把这些header发送给客户端浏览器也无所谓,你可以把发送header的部分写到构造函数里。

    接下来就要判断是不是OPTIONS的请求,如果是,那就一个exit()搞定。你说呢?

    if (Yii::$app->getRequest()->getMethod() === 'OPTIONS') {
      exit;
    }
    

    上面这个,你不想执行action的话,那可以写到beforeAction里,你觉得呢?
    这样在options这一请求,浏览器永远会收到可以放行的信号;那么你只要做好token验证就行了。
    你觉得咋样?

    这个问题我最终得到了几乎完美的解决方案,behaviors验证的时候有个顺序,只需要把corsFilter的顺序提前到verbFilter就可以在验证是否允许OPTIONS类型请求之前就返回200的成功码。

    PS:问这个问题还遇到一点波折,在一个YII群里问问题,结果有个自以为是的大佬一个劲的鄙视我,然后BB一大堆restful的知识,说我这api不是restful的,这这那那的。不管怎样吧,没帮上忙,还T我出群里,如果这个答案帮到你,希望大家能做一个谦虚一点的人,引以为耻。

  • 回复了 的回答

    这个简单,其实如果你的应用不是针对全世界广大群众的,那么就不用那么限制Origin。

    header('Access-Control-Allow-Origin:*');
    

    PHP这边只要把客户端需要的关键几个header准备好就行,无论是不是发送options请求都
    把这些header发送给客户端浏览器也无所谓,你可以把发送header的部分写到构造函数里。

    接下来就要判断是不是OPTIONS的请求,如果是,那就一个exit()搞定。你说呢?

    if (Yii::$app->getRequest()->getMethod() === 'OPTIONS') {
      exit;
    }
    

    上面这个,你不想执行action的话,那可以写到beforeAction里,你觉得呢?
    这样在options这一请求,浏览器永远会收到可以放行的信号;那么你只要做好token验证就行了。
    你觉得咋样?

    谢谢你的解答,我看了源码之后发现是配置项出错了,'Access-Control-Request-Method' => ['*'],这样就可以得到options返回200,'Access-Control-Request-Headers' => ['Authorization']这样就可以进行认证,但是我现在想知道另外一个优化方案,就是我的所有请求必须在verbs里配置支持OPTIONS才行,我觉得这样是不合理的,请问有什么好的办法吗

    `protected function verbs()

    {
        $verbs = parent::verbs();
        $verbs['register'] = ['POST'];
        $verbs['login-by-id'] = ['POST'];
        return $verbs;
    }`
    
  • 2018-12-24 已签到
    连续签到2天,获得了10个金钱
总监 等级规则
2135/5000
资料完整度
60/100
用户活跃度
0/100

Ta的关注

3

Ta的粉丝

10

Ta的访客

82