今天搞了半天的跨域问题,想通过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; #... }
以上如有不对之处,敬请指正!
原文地址:https://www.cnblogs.com/kill370354/p/12194322.html
时间: 2024-10-05 12:40:03