php - Yii2 CORS 过滤器只允许特定的源域失败
问题描述
我的行为有以下几点
public function behaviors()
{
$behaviors = parent::behaviors();
$auth = $behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBearerAuth::className(),
QueryParamAuth::className(),
],
'except' => ['login', 'check-token-validity', 'test-accounts'],
];
unset($behaviors['authenticator']);
$behaviors['corsFilter'] = [
'class' => Cors::className(),
'cors' => [
// 'Origin' => ['*'],
'Access-Control-Allow-Credentials' => true,
'Origin' => static::allowedDomains(),
'Access-Control-Request-Method' => ['POST', 'PUT'],
'Access-Control-Expose-Headers' => ['Access_status_code'],
],
];
$behaviors['verbs'] = [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST', 'OPTIONS'],
],
];
$behaviors['authenticator'] = $auth;
//access
return $behaviors;
}
public static function allowedDomains()
{
return [
'http://test1.example.com',
'http://test2.example.com',
];
}
如上所述,我已将原点设置为上述静态域,但是当我检查我的 ajax 请求响应时,我发现响应标头原点设置为Access-Control-Allow-Origin: *
另外,尽管设置了,我仍然无法限制访问方法Access-Control-Request-Method
我还需要添加什么才能使其正常工作?
解决方案
推荐阅读
- java - 如何区分鼠标事件和触摸屏事件?
- javascript - 如何从 php 传递数据以在 javascript 中对其进行初始化?
- javascript - Terser CLI:如何删除评论?
- c# - 在单个 .sln 中管理本地 nuget 依赖项
- visual-studio-code - ElixirLS 调试器在与 Phoenix 和 VSCode 一起使用时意外停止
- c# - ConnectionFactory 从 .net 核心注册服务创建了太多连接
- javascript - 如何使用 babel 将我的 nodejs 代码投入生产?
- c# - 为什么我在 Visual Studio 中弹出一个提示 System ArgumentNullExpection 已被抛出?
- javascript - 如何在我的 Aurelia 项目中本地使用 AWS 开发工具包
- java - java:在一个变量上使用 volatile VS 每个变量