解决跨域报错

1. 解决跨域报错

Mixed Content The page at was loaded over HTTPS but requested an insecure resource This request has been blocked the content must be served over HTTPS

上面这个报错信息,想必大家并不陌生。

首先提一下什么是跨域。

跨域是:协议,主机,端口,三者只要有一个是不同,那么就会构成跨域。只有当这三者都相同的时候才认为是同源的,浏览器为了保证安全性,只有同源的请求才能相互获取内容。

1.1 问题场景再现

最近在开发一款智能客服机器人(其实就是调用第三方API接口),部署到Linux中使用了SSL证书,也就是访问对话页面使用的是https协议,但是请求接口中返回的urlhttp协议,因为要拿到接口返回的图片,音频,视频的url,然后放入对应的标签中,但是浏览器会阻止加载,因为跨域了。

2. 解决方案

2.1 最推荐的解决方案

nginx做反向代理,使得我们请求我们项目的相对路径,然后通过Nginx反向代理到接口返回的url中。

markdown 复制代码
server {
 listen       80;
 server_name  192.168.17.129;

 location /yunwen {
  root   html;
  index  index.html index.htm;
  proxy_pass  http://api.yunwen.com
 }
}

上面/yunwen表示我们请求这个url时会反向代理到http://api.yunwen.com

2.2 最不推荐的解决方案

修改浏览器中安全设置,把改接口返回的协议和ip或域名加入到信任列表中。

可以使用下面的命令打开谷歌浏览器的设置。

markdown 复制代码
chrome://flags/#unsafely-treat-insecure-origin-as-secure

2.3 其它解决方案

可以修改后端代码,让其经过后端接口转发。

相关推荐
rookie fish5 分钟前
Electron+Vite+Vue项目中,如何监听Electron的修改实现和Vue一样的热更新?[特殊字符]
前端·vue.js·electron
珹洺9 分钟前
Java-Spring入门指南(五)Spring自动装配
android·java·spring
她超甜i9 分钟前
前端通过后端给的webrtc的链接,在前端展示,并更新实时状态
前端·javascript·webrtc
歪歪10015 分钟前
Redux和MobX在React Native状态管理中的优缺点对比
前端·javascript·react native·react.js·架构·前端框架
帧栈16 分钟前
并发编程原理与实战(二十七)深入剖析synchronized底层基石ObjectMonitor与对象头Mark Word
java
东风西巷19 分钟前
Atlantis Word Processor:全方位的文字处理专家
前端·学习·word·软件需求
imHanweihu20 分钟前
基于POI-TL实现动态Word模板数据填充(含图表):从需求到落地的完整开发实践
java·onlyoffice·poi-tl
月夕·花晨23 分钟前
Gateway -网关
java·服务器·分布式·后端·spring cloud·微服务·gateway
失散1324 分钟前
分布式专题——6 Redis缓存设计与性能优化
java·redis·分布式·缓存·架构
杏花春雨江南24 分钟前
Spring Cloud Gateway 作为一个独立的服务进行部署吗
java·开发语言