资讯专栏INFORMATION COLUMN

yii2 restful 401+nginx+axios跨域设置问题

AaronYuan / 812人阅读

摘要:所以,虽然接口正确返回了,但是由于跨域限制取不到这个值。这个需要在中深层次跨域设置。第一个想到的就是在父级的中加入设置。找了半天,最后找到一个不是很完美的解决方案,就是在里边加入了跨域的设置。因为开发原则是尽量不要动包。

1.一般的跨域get和post,通过设置nginx就可以解决。在nginx.conf的http中加入以下代码即可

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers X-Requested-With,Content-Type,x_requested_with;

add_header Access-Control-Allow-Methods HEAD,GET,POST,OPTIONS;

2.在上面的nginx跨域配置好的情况下。最近遇到一个问题,就是yii2 restful带token请求,如果鉴权失败返回401,axios获取不到。找了半天发现是服务器端的问题。具体原理也不是很清楚,大体意思就是客户端请求有几个层次,鉴权的代码比较靠前,并没有用到nginx的跨域。所以,虽然接口正确返回了401,但是axios由于跨域限制取不到这个值。这个需要在yii2中深层次跨域设置。

3.第一个想到的就是在父级controller的behaviors中加入cors设置。这个是yii2自带的一个配置。但是发现客户端报错,意思是不能有两个相同的跨域域名。因为这样yii2的跨域设置和nginx的跨域设置冲突了。

4.找了半天,最后找到一个不是很完美的解决方案,就是在yii/filters/auth/AuthMethod.php里边加入了跨域的设置。因为实在没有找到其他什么地方,可以在authenticatior失败之前设置自定义header来跨域。

5.当然,我觉得这个方法烂透了。因为yii2开发原则是尽量不要动vendor包。不知道有没有大神,能给我提供一个更好的方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31687.html

相关文章

  • 使用 vue + thinkjs 开发博客程序记录

    摘要:一入冬懒癌发作,给自己找点事干。之前博客程序写过几次,的写过两次,用写过,随着版本从升级到之前的博客程序也做过升级。这里主要记录一下开发过程中遇到的问题和解决方法。后端使用守护进程即可。 一入冬懒癌发作,给自己找点事干。之前博客程序写过几次,php 的写过两次,nodejs 用 ThinkJS 写过,随着 ThinkJS 版本从1.x 升级到 2.x 之前的博客程序也做过升级。但是因为...

    Mike617 评论0 收藏0
  • Yii支持多域名cors原理

    摘要:说明测试使用的接口域名,多域名为和。设置多域名尝试直接通过的模块追加值实现,如下接口请求和响应头如下当前域为,需跨域请求的资源。故通过该方法不能设置多域名进行。 首发于 樊浩柏科学院 平常我们遇到跨域问题时,常使用 cors(Cross-origin resource sharin)方式解决。不知你是否注意到,在设置响应头 Access-Control-Allow-Origin 域的...

    Darkgel 评论0 收藏0
  • 《从零构建前后分离的web项目》实战 - 欲善其事必先利其器 继续打磨前端架构

    摘要:工欲善其事必先利其器继续打磨前端架构抱歉生病拖更了,快乐本文永久更新地址填坑上回还真的有同学提到了这个问题,感谢细心的你。既实现了拦截又实现了状态的共享。愉快的拿到了数据这样,前后分离的项目可以这样借助测试接口,不需要骚扰任何人。 工欲善其事必先利其器 - 继续打磨前端架构 抱歉生病拖更了,1024快乐 本文永久更新地址 填坑 上回还真的有同学提到了这个问题,感谢细心的你。@_noob...

    Mike617 评论0 收藏0
  • Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置

    摘要:今天松哥就带大家来看看的使用。此时启动前端项目,就可以顺利发送网络请求了。松哥将自己封装的网络请求库已经放在上,欢迎大家参考。前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个项目本身也停止维护,目前建议使用的方案是 axios。今天松哥就带大...

    Ku_Andrew 评论0 收藏0
  • Yii2.0 RESTful API 基础配置教程

    这篇说下yii2.0开发 API 吧,使用 RESTful API模式 安装Yii2.0 通过 Composer 安装 这是安装Yii2.0的首选方法。如果你还没有安装 Composer,你可以按照这里的说明进行安装。 安装完 Composer,运行下面的命令来安装 Composer Asset 插件: php composer.phar global require fxp/composer-a...

    fyber 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<