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

Posted 醉马江湖笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    #...
}
技术图片
 
 

  以上如有不对之处,敬请指正!

以上是关于phpstudy nginx设置CORS跨域不起作用的可能解决方法的主要内容,如果未能解决你的问题,请参考以下文章

使用CORS解决跨域问题

Nginx 设置cors跨域

Nginx 设置cors跨域

来自本地文件的jQuery ajax POST访问跨域不起作用

C# asp.net 如何跨域获取cookie

Nginx解决跨域问题(CORS)