跨域问题
跨域是浏览器基于同源策略限制本网页(域)访问其他端口(网页/域地址)的一种保护措施。防止黑客恶意修改本网页发送其他请求(披着羊皮的狼)。
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/; #替换为自己的目标站点
}
以后有时间研究一下nginx也是极好的