如何在https域名下请求http接口

线上环境是https,测试环境是http,在线上想调测试接口,直接请求
现在会报错Mixed Content: The page at 'https:xxx' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://xxx'. This request has been blocked; the content must be served over HTTPS.

是否可以用在http服务器设置CORS(跨域资源共享)来解决?

阅读 27.8k
3 个回答

两种处理思路:

  • 1、把测试环境也升级为https,可以考虑使用免费的ca服务,如let's encrypt
  • 2、在线上环境增加一层反向代理,将前端https请求,代理给到后端的http服务

虽然目前部分浏览器是可以的,尤其是国产的,甚至有些把支持加密与非加密协议混合这点当前优点来看。但新版本浏览器只能更严格,将来http协议会更加受限的。

如果网站同时支持https协议,可以都改为https, 可以在html里用//开头的简写方式,这样能与html文件获取协议保持一致。如果不支持https协议的内容,如站外的js,图片等,只能舍弃了,无法用跨域方式解决的,因为js发起的请求也要与html保持一致。

原则上都是不允许的, 浏览器自己的安全策略,代码简单的前端代码没有办法解决

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进