public function getCors(){
$fecshop_uuid = Yii::$service->session->fecshop_uuid;
$cors_allow_headers = [$fecshop_uuid, 'fecshop-lang', 'fecshop-currency', 'access-token'];
$cors = $this->appserver_cors;
$corsFilterArr = [];
if (is_array($cors) && !empty($cors)) {
if (isset($cors['Origin']) && $cors['Origin']) {
$corsFilterArr['Origin'] = $cors['Origin'];
}
if (isset($cors['Access-Control-Request-Method']) && $cors['Access-Control-Request-Method']) {
$corsFilterArr['Access-Control-Request-Method'] = $cors['Access-Control-Request-Method'];
}
if (isset($cors['Access-Control-Max-Age']) && $cors['Access-Control-Max-Age']) {
$corsFilterArr['Access-Control-Max-Age'] = $cors['Access-Control-Max-Age'];
}
if (isset($cors['Access-Control-Expose-Headers']) && $cors['Access-Control-Expose-Headers']) {
$cors_allow_headers = array_merge($cors_allow_headers, $cors['Access-Control-Expose-Headers']);
}
$corsFilterArr['Access-Control-Expose-Headers'] = $cors_allow_headers;
//新增部分
if(Yii::$app->request->getMethod() === 'OPTIONS'){
$corsFilterArr['Access-Control-Request-Headers'] = $cors_allow_headers;
}
}
return $corsFilterArr;
}
谢谢,已经找到问题,整个请求周期里少重写了一个方法,旧的方法用的use fecshop\models\mysqldb\Customer
这个命名空间,所以还是跑到旧的Customer里去了。
不好意思
感谢你的回答
跟踪打印了AppserverController.php 、Appserver.php里的cors 是包含fecshop-currency的
不过把appserver\web\index.php 这几行注释去掉了 可以访问了 加上注释就不行
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
$cors_allow_headers = ['fecshop-uuid','fecshop-lang','fecshop-currency','access-token'];
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, ".implode(', ',$cors_allow_headers));
header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
exit;
}
而且去掉注释之后 貌似会重复请求url