美文网首页
【跨域问题】

【跨域问题】

作者: giraffecode9668 | 来源:发表于2020-03-31 21:17 被阅读0次

    跨域问题

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

    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也是极好的

    相关文章

      网友评论

          本文标题:【跨域问题】

          本文链接:https://www.haomeiwen.com/subject/flrwuhtx.html