后端thinkphp5 服务器nginx
前端:
出现跨域问题了:下面是报错:
两个方法入手 :
前端修改header代码:
1.content-type 去掉这个 或者应该根据请求方式请求数据格式动态生成的
2.后端服务器上加跨域代码:
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}
意思是允许get和post请求 。接收
如果需要别的请求方式也可以逐个加进去
add_header Access-Control-Allow-Methods 'GET, POST, PUT,DELETE,OPTIONS';
不推荐跨域代码加php里面,最好是加服务器里面
举个例子:
比如一台服务器。a.com ,b.com,c.com
a.com是做支付的 b.com是前端项目 c.com是后端的
后端项目是一个(一套代码)
比如需求是b.com可以请求 后端接口(能跨域) ,其他域名不可以。如果你把跨域代码加后端php里面。那默认就是全部可以跨域。这样非常危险
最理想的是服务器上加b.com 可以跨域。其他不能跨域的域名都不能加进去
最后。如果不能理解。就直接ngix上面加这段就完事儿
listen 80;
server_name b.com
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}