Yii 跨域设置

控制器设置:

abstract class ControllerBase extends Controller
{
    public function __construct($id, $module, $config = [])
    {
        parent::__construct($id, $module, $config);
    }

    public function beforeAction($action)
    {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
        header('Access-Control-Allow-Credentials: true');
        header("Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since");
        if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
            \Yii::$app->response->setStatusCode(204);
            \Yii::$app->end(0);
        }
        return parent::beforeAction($action);
    }
}

nginx设置:

server {
    listen   80;
    server_name    xxx-dev.myfuwu.cn;
    root /webser/www/xxx/web;
    index  index.php;
    access_log  "pipe:/usr/local/sbin/sbin/cronolog /webser/logs/tengine/cronolog/%Y/%m/%Y-%m-%d_access_xxx.log" wwwlogs;
    error_log   "pipe:/usr/local/sbin/sbin/cronolog /webser/logs/tengine/cronolog/%Y/%m/%Y-%m-%d_error_xxx.log" warn;
    
    location ~ /static {
        try_files $uri $uri/ /static/index.html =404;
    }
    
    location / {
        set $cors "true";
        
        if ($request_method = 'OPTIONS') {
            set $cors "${cors}options";  
        }
        
        add_header 'Access-Control-Allow-Origin' "$http_origin";
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';
        

        # ifit's OPTIONS, then it's a CORS preflight request so respond immediately with no response body
        if ($cors = "trueoptions") {
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Length' 0;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            return 204;
        }
        
        try_files $uri $uri/ /index.php;
        include /webser/www/xxx/web/nginx-rewrite.conf;
    }
    
    location ~ \.php  {
        include fastcgi_params;
        fastcgi_pass  127.0.0.1:9001;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    #fastcgi_param  SCRIPT_FILENAME   $document_root$real_script_name;
        #    fastcgi_param  SCRIPT_NAME       $real_script_name;
        #    fastcgi_param  PATH_INFO         $path_info;
        #    fastcgi_param  TAG               $real_script_name;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|bmp|css|js|swf)$ {
        access_log off;
        #break;
    }

    location =/check.html
    {
            root /webser/www;
            access_log off;
    }

}
原文地址:https://www.cnblogs.com/stones/p/5435529.html