问题原因:
前后端不是一个服务导致的浏览器禁止访问的安全问题。比如前端部署在http://x.x.x.x:8888,后端部署在http://x.x.x.x:9999,由于端口不一致,浏览器安全起见不允许一个web页面有不同ip或端口的地址发送出流量。在开发者工具可以看出CROS错误。
解决办法:
关闭浏览器安全策略。不常用。
前端服务器做转发。这也是常见的解决办法,nginx举例
location /pro/ { #要替换的原路径
proxy_pass http://wxcc.xxx.cn/; #替换后的路径,比如 原 http://xxxxx:8888/pro/xxx.html 替换后 http://wxcc.xxx.cn/xxx.html
proxy_set_header Host wxcc.iepose.cn; #添加转发头 host 为指定主机,必须指定,如果不指定就是原服务器的ip,导致发送请求返回404
proxy_set_header X-Real-IP $remote_addr; #用途:当 Nginx 作为反向代理时,目标服务器收到的请求中,客户端的原始 IP 地址可能会丢失,因为 Nginx 是代理,而不是直接与客户端连接。通过设置 X-Real-IP
,你可以将真实的客户端 IP 传递给后端服务器,让后端知道是谁发起了请求。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #用途:这个头部用于记录客户端和所有经过的代理服务器的 IP 地址。在代理链中,目标服务器可以通过查看 X-Forwarded-For
确定请求经过了哪些代理服务器,以及最终发起请求的客户端 IP。通常,后端服务器用来分析真实来源或者进行日志记录。
proxy_set_header X-Forwarded-Proto $scheme; #用途:当 Nginx 代理请求到后端服务器时,后端服务器可能需要知道客户端使用的是 HTTP 还是 HTTPS 协议。X-Forwarded-Proto
头让后端可以知道用户是通过哪种协议访问的,即使在 Nginx 和后端之间的连接本身可能使用另一种协议(例如,Nginx 通过 HTTP 转发 HTTPS 请求)。后端服务器通常使用这个信息来生成相应的重定向或生成 URL。
}
后端服务器配置http响应头为前端地址,浏览器收到后允许访问。
标签:常见问题,http,跨域,IP,CROS,Nginx,proxy,服务器,客户端 From: https://www.cnblogs.com/GKLBB/p/18442028