phpstudy nginx設置CORS跨域不起作用的可能解決方法


  今天搞了半天的跨域問題,想通過nginx配置跨域,希望以后本地調試程序都不用為這件事煩心。無非就是設置幾個請求頭:

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers *;

但是配置半天沒配好,真的是半天。。后來配好了,在此分享給大家,希望給大家一點幫助。

 

請求PHP文件報錯CORS

  配置那三行,不能寫在 localhost_80.conf 的

location / {
    #...
}

里面,因為有反向代理!繼續往下看這個文件,會看到

location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
}

必須寫在這里面。

 

以GET方式請求靜態文件(.txt, .json等)報錯CORS

  因為我的網站根目錄下有一個 nginx.htaccess 文件,里面也有

location / {
    #...
}

localhost_80.conf 文件里面 include 了這個文件,所以配置 conf 文件不起作用,必須在這里面配置。不過新建的網站不會自己有,是我之前配置了偽靜態才生成的。

 

以非GET方式請求靜態文件(.txt, .json等)出現405

  這種錯誤解決方法不止一種,參考網上資料,在 localhost_80.conf 里面增加一行:

location / {
    #...
    error_page 405 =200 $uri;
    #...
}
 
 

  以上如有不對之處,敬請指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM