导言:
使用yii2框架遇到跨域问题,但是使用官方提供的解决方法不起效果。具体为啥没有生效目前无法知晓,有知道的朋友请告知我一声,感激不尽。
1.官方提供的解决方式:
public function behaviors()
{
return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to
'Origin' => ['http://www.myserver.com', 'https://www.myserver.com'],
// Allow only POST and PUT methods
'Access-Control-Request-Method' => ['POST', 'PUT'],
// Allow only headers 'X-Wsse'
'Access-Control-Request-Headers' => ['X-Wsse'],
// Allow credentials (cookies, authorization headers, etc.) to be exposed to the browser
'Access-Control-Allow-Credentials' => true,
// Allow OPTIONS caching
'Access-Control-Max-Age' => 3600,
// Allow the X-Pagination-Current-Page header to be exposed to the browser.
'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
],
],
];
}
这个方法就是在你继承的基类里面使用behaviors方法来进行调用。官方文档链接:https://www.yiiframework.com/doc/api/2.0/yii-filters-cors 但是在我项目中这个方法无法生效。
2.我的解决方式:
我解决的方式很简单,就是在配置mian配置文件中加入以下配置
'as cors' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Allow-Credentials' => true,
],
],
需要注意的是这个配置是和components配置平级的而不是写到它里面。
上面就是我的解决方式,希望帮助到需要的人。