golang 做服务端, nginx做跨域设置, get行 post不行
server {
listen 80;
server_name dev.ss.soholly.com;
error_log /usr/local/etc/nginx/logs/dev_coupon.log;
location / {
proxy_connect_timeout 1000;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Connection "";
if ($http_origin ~ soholly\.com(:\d+)?$) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Credentials' "true";
}
proxy_pass http://http_ss_soholly;
}
}
upstream http_ss_soholly {
server 127.0.0.1:7000;
keepalive 256;
}
如上是我的nginx内容, get请求可以访问, post请求就跨域了, 好奇怪
屏幕快照 2019-09-05 上午10.21.26
屏幕快照 2019-09-05 上午10.22.47
屏幕快照 2019-09-05 上午10.23.46
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
POST请求之前会有一次
OPTIONS
请求,因此你需要加一条配置:另外,你要看一下客户端请求有没有自定义请求头,如果自定义了请求头,还需要加一条:
如果你不需要客户端提交 cookie ,需要删除:
实际的配置应该是:
你可以参考这篇文章: https://segmentfault.com/a/11...
nginx少了几个响应头,完整的如下,包跨域成功
浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。
非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。
"预检"请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin,表示请求来自哪个源。
具体看下这篇文章就明白了:跨域资源共享 CORS 详解
加一条 Access-Control-Allow-Methods的配置试试