4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
解决前端跨域:has been blocked by CORS policy: No \'A..._CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-24

在前端工作中 有时候会碰到跨域的问题 就是请求的接口地址和本身的服务器不属于一个域内 此时浏览器会报错

XXXXX 请求的跨域url has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested

网上有很多的解决办法 可以用jsonp来请求等等。

这里可以用nginx的转发功能来实现。

比如我这里axios请求的接口是

http://xxxx.xxxx.com/abc/efg/hi?12341234324

我用了axios的get方法直接请求了这个连接 不出意外的浏览器报错。

此时我在nginx里配置了这样一条

 

location /abc/efg/ {

             proxy_pass http://xxxx.xxxx.com;

        }

代码请求的连接直接改为

/abc/efg/hi?1234234242432

此时去掉了前面的域名 实际上请求的是我本地的地址

127.0.0.1 端口号/abc/efg/hi?123121313

然后nginx碰到了

/abc/efg/

所以自动的捕捉匹配这个端口的地址 转到了

http://xxxx.xxxx.com/abc/efg/hi?12341234324

可以实现的原因在于 出现了跨域问题是浏览器的报错 只要后台处理一下 用nginx转发就可以轻松的解决问题。

注意 我在配置了nginx后 实际测试时没有生效 一度以为自己配的有问题 后来发现时我自己的电脑问题 事实证明 觉得配的没问题还一直折腾的时候 那就是电脑问题了 可以换服务器上试一试。nginx经常不生效的 感觉windows上的nginx不靠谱 建议不确定的时候可以把跳转连接换成www.baidu.com来实验一下。我本地测试的时候百度跳转都没生效 有时候怀疑电脑有问题可能是正确的。

我是第二弹分割线

 

第二弹

在解决了跨域问题后 又出现了一个老大难的问题 如何解决https请求的问题。

当上文的nginx放在生产环境时 请求对方的连接变成了

https://xxxx.xxxx.com/abc/efg/hi?12341234324

然后在重启nginx的时候 无法启动nginx 我本身的服务器是http的 对方是https 启动的时候报错

https protocol requires SSL support

1.单纯的只是我方nginx安装的时候没有装ssl模块 解决方式参考连接

https://www.cnblogs.com/piscesLoveCc/p/6120875.html

2.在nginx配置里不需要放上监听443端口的内容 配置证书跟密钥

            listen 443 ssl;

            ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;

            ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;

 

就是这些东西 只是我们请求别人的接口 不需要配置证书跟密钥。除非是我方自己是https的时候 才需要监听端口和配置自己的证书跟密钥。

\"\" \"\" \"\" 点赞 10 \"\" \"\" 评论 3

本文链接: http://unicros.immuno-online.com/view-709972.html

发布于 : 2021-03-24 阅读(0)
公司介绍
品牌分类
其他
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616