public function getYiiAuthCors(){
$protocol = (int)$_SERVER['SERVER_PORT'] == 80 ? 'http' : 'https';
$domain = $protocol.'//'.$_SERVER['SERVER_NAME'];
$cors_allow_headers = $this->getCorsAllowHeaders();
$cors = $this->appserver_cors;
$corsFilterArr = [];
if (is_array($cors) && !empty($cors)) {
if (isset($cors['Origin']) && $cors['Origin']) {
if(stripos($domain,$cors['Origin']) === 0){
$corsFilterArr[] = 'Access-Control-Allow-Origin: ' . $cors['Origin'];
}
}
if (isset($cors['Access-Control-Allow-Headers']) && is_array($cors['Access-Control-Allow-Headers'])) {
$cors_allow_headers = array_merge($cors_allow_headers, $cors['Access-Control-Allow-Headers']);
}
$corsFilterArr[] = 'Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, ' . implode(', ', $cors_allow_headers);
if (isset($cors['Access-Control-Allow-Methods']) && is_array($cors['Access-Control-Allow-Methods'])) {
$corsFilterArr[] = 'Access-Control-Allow-Methods: ' . implode(', ',$cors['Access-Control-Allow-Methods']);
}
$corsFilterArr[] = 'Access-Control-Allow-Credentials: true';
}
return $corsFilterArr;
}
如果是HTTPS的话,需要注意$protocol的获取是否正确,如果获取不正确,建议nginx/httpd 增加下标记,程序里的判断修改下。