教程:解决网站CORS跨域 http和https混合内容问题
今天在捣鼓vercel php运行时的时候,发现了个令人头痛的问题。就是跨域资源共享(CORS)问题和HTTPS页面下的混合内容(Mixed Content)警告。
相信很多朋友都有类似的经历,当你在一个网页中嵌入别的网站资源链接时,浏览器控制台会频繁抛出Blocked by CORS Policy错误,或用户界面因HTTP资源被屏蔽而显示异常。这就是典型的跨域问题和混合内容警告!
vercel php有感兴趣的朋友可以去研究下
项目地址: https://github.com/vercel-community/php
跨域资源共享CORS问题解决:
CORS(Cross-Origin Resource Sharing)是浏览器的一种安全机制,用于限制不同源(协议、域名、端口)之间的资源请求。在开发前后端分离项目或调用第三方API接口时,常会遇到“跨域请求被阻止”的问题。
一.如果你是网站开发者,进入网站修改nginx配置
1.aapanel面板为例,进入/www/server/panel/vhost/nginx,点击需要修改的网站conf文件
2.在root /www/wwwroot/xxx下面添加一段代码
1 |
|
3.保存,重启一下即可
二. 使用代理服务器绕过跨域限制
Cloudflare提供了Workers(轻量级无服务器函数)功能,允许你自定义HTTP请求和响应过程。你可以通过创建一个Worker来实现代理请求并加上适当的CORS响应头,从而绕过浏览器的同源策略。Cloudflare免费账户的Worker每天有请求上限(如 10 万次/天)
三. 配置浏览器临时关闭 CORS
1.关闭所有正在运行的Chrome浏览器窗口
2.使用命令行运行以下命令(可新建 .bat 文件):
1 |
|
3.虽然可行,但是不推荐使用
四. 通过浏览器扩展程序解决跨域问题
CORS Unblock就是一个不错的选择
http和https混合内容 Mixed Content问题解决:
https页面中,Mixed Content(混合内容)是指页面通过HTTPS加载,但其资源(如图片、脚本、样式表等)部分通过HTTP加载,这会导致安全风险
一. 将源http改为https
这是最简单又有效的方法,最推荐的方式,修改源代码中资源链接即可
二. 使用相对协议
将http: 改为 //,自动使用页面所在的协议,例如:
1 |
|
但是这种方式在现代开发中已不常用,推荐直接使用https明确指定
三. 替换资源来源
若资源提供方不支持,替换为提供https的其他CDN或源。或将资源下载到本地服务器,自己通过https提供
四. 允许浏览器设置
1.chrome依次打开设置-隐私和安全-更多内容设置-不安全内容-添加允许显示不安全内容
2.或者直接输入
1 |
|
五.直接使用代理服务器中转
1.将下面代码保存为pojie.php文件
1 |
|
2.将该php文件上传到网站根目录
3.使用如下格式访问即可解决
1 |
|
4.如果出现跨域问题,可以按照我上面提供的方法
结束语录:
以上方法大部分都是涉及pc浏览器。为了兼容手机浏览器访问,强烈建议使用代理服务器,或者修改nginx配置,已避免出现问题。