转载 Mixed Content Page

本文讨论了网站配置HTTPS后,遇到的百度地图无法正常显示的问题及其原因。提供了多种解决方案,包括使用相对协议、设置Content-Security-Policy等。

网站配置了https之后,网页上的百度地图无法正常显示,报错类似于:

Mixed Content: The page at 'https://url_1' was loaded over HTTPS, 
but requested an insecure script 'http://monitor_analytic.js'. 
This request has been blocked; the content must be served over HTTPS.

原因可能是:

1. HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的
2. 在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。

提出的解决办法:

方法1:相对协议。
对于同时支持HTTPS和HTTP的资源,引用的时候要把引用资源的URL里的协议头去掉,
浏览器会自动根据当前是HTTPS还是HTTP来给资源URL补上协议头的,可以达到无缝切换。

 

下面是回答中有人给出的解决办法:http://thehackernews.com

The search engine giant recommended you to enable it via an HTTP response header,
"Content-Security-Policy: upgrade-insecure-requests," if all the content is controlled by you.

However, if the unsecure resources are served from a web server you don’t control, you can include the 
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> tag in your page's <head>.

对于https协议下访问http的图片链接,chrome浏览器并没有block,而是提出了警告。但是并不是所有手机的webkit浏览器都支持这样的警告,很多手机可能还是会直接block,造成图片没有办法显示

总结:对于mixed content page that the connection is only partially encrypted. 为了在http转https的过程中顺利过渡,mixed content page页面是非常糟糕的选择。

转载于:https://www.cnblogs.com/taiguyiba/p/6722236.html

### 如何在 Selenium 中处理 Mixed Content 问题 当使用 Selenium 进行网页自动化测试时,遇到 mixed content(即 HTTPS 页面加载 HTTP 资源)可能会引发安全警告或阻止某些资源加载。为了确保页面能够正常工作并避免这些问题,在 Python 的 Selenium 实现中可以通过配置 Chrome 浏览器选项来控制对混合内容的行为。 对于想要忽略特定类型的提示或是调整浏览器的安全策略,可以利用 `ChromeOptions` 类来自定义启动参数。具体来说,针对 mixed content 处理,可采用如下方式: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options as ChromeOptions # 设置 Chrome 浏览器的选项 chrome_options = ChromeOptions() prefs = { "profile.default_content_setting_values": {"mixed_script": 2} } # 将 mixed_script 设为 2 表示屏蔽不安全脚本[^4] chrome_options.add_experimental_option("prefs", prefs) # 使用带有自定义选项的 WebDriver 对象 wd = webdriver.Chrome(options=chrome_options) wd.get('https://example.com') ``` 上述代码片段展示了如何创建一个具有特殊偏好的 Chrome 浏览器实例,其中 `"mixed_script"` 参数被设为 `2` 来防止执行潜在危险的跨协议 JavaScript 文件。这有助于减少因加载非 SSL 加密的内容而产生的风险,并使得自动化过程更加顺畅。 需要注意的是,虽然这种方法可以帮助绕过一些由浏览器施加的安全限制,但在实际应用环境中应当谨慎对待这些设置,因为它们可能会影响用户体验以及数据传输安全性。 #### 关键点总结: - 利用 `ChromeOptions` 和实验性偏好设定 (`add_experimental_option`) 方法。 - 配置 `"profile.default_content_setting_values.mixed_script"` 值为 `2` 以禁用混合脚本加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值