【跨域问题】

2020-03-31  本文已影响0人  giraffecode9668

跨域问题

跨域是浏览器基于同源策略限制本网页(域)访问其他端口(网页/域地址)的一种保护措施。防止黑客恶意修改本网页发送其他请求(披着羊皮的狼)。

CROS措施可以方便我们解决跨域问题:

1、小程序不是浏览器,不存在此问题(猜测)
2、开发的前后端分离项目,使用nginx将请求包装成其他地址(域)并转发
3、webpack设置代理,前端开发过程设置代理,开发可以正常访问,但是生产环境使用nginx同样要设置代理,参见vue cli 解决跨域 线上 nginx 反向代理配置。(同第2点)
4、通过后端解决,在springboot中有注解@CrossOrigin,加在Controller类上即可对访问服务器的页面没有该策略,但是可能不安全吧(猜测)

说明:前端开发vue框架代理proxy发现只能在dev环境起作用,prod环境在nginx中同样需要配置代理!!!详见下:
nginx location配置详细解释
vue项目使用proxy代理解决跨域及nginx配置

webpack配置文件:

devServer:只是适用开发环境,不适用部署环境,打包生成dist文件不包含该配置(本人猜测)
devServer-Host:项目Host地址,默认是localhost,也就是127.0.0.1,网上说建议0.0.0.0,这样子在本地也可以使用本地IP进行访问;如果是localhost可能存在本地IP访问不了的情况,只能使用localhost:xxx访问。或者可以设置其他类似www.xxx.cn格式,本地调用满满格调...
devServer-disableHostCheck:不使用Host检验,默认false,即开启Host检验。
devServer-open:运行打开地址

nginx获取ip信息等

location /prod-api/{
    # host 修改为真实的域名和端口
    proxy_set_header Host $http_host;
    # 客户端真实ip
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 客户端真实协议(http/https)
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect     off; 
    proxy_pass http://localhost:8080/; #替换为自己的目标站点
}

另外参考:
解决uni-app开发环境中H5端跨域问题
uniapp - h5 -devServer

以后有时间研究一下nginx也是极好的

上一篇下一篇

猜你喜欢

热点阅读