有时我会在Chrome Devtools中看到此警告:
You should consider switching your application to a secure origin, such as HTTPS.
这是怎么回事,例如HTTPS?除了HTTPS之外,您可以为网站提供服务的“安全来源” 以外吗?
我使用https没问题(我正在使用的所有网站上都启用了https)。这个问题纯粹出于好奇。
答案 0 :(得分:4)
简短的回答:是的,localhost
是安全来源。 Chrome浏览器还有一个命令行标志,用于将指定的HTTP端点视为安全的--unsafely-treat-insecure-origin-as-secure=http://a.test,http://b.test
。因此,这不是 just “ HTTPS”。
更长的答案:其他方案,例如blob:
,wss:
和chrome-extension:
也可以视为安全上下文。 about:blank
是一个常见示例,可能会有所不同,因为浏览器必须记住它是如何到达那里的。并且iframe
指向HTTPS页面但嵌入在HTTP页面中,将是不安全的。
要确定浏览器如何看待所有这些,请检查window.isSecureContext
的值。规范在这里:https://w3c.github.io/webappsec-secure-contexts/
此铬页https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins提供了一些上下文信息并链接到上述规范。
例如,data:
URL是不安全的,但是blob:
URL是安全的。
const src = "<script>document.write(isSecureContext)</scr"+"ipt>";
a.src = `data:text/html,${src}`;
b.src = URL.createObjectURL(
new Blob([src], {type:'text/html'}));
<p>data url is insecure
<iframe id=a width=100 height=25></iframe>
<p>blob url is secure
<iframe id=b width=100 height=25></iframe>
答案 1 :(得分:0)
通过执行以下操作,我可以成功绕过Chrome使用https连接的要求。它与“接受的答案”中的链接中的说明稍有不同:
Windows 10:
在“目标:”字段中,在最后一个 引号,例如:
“ C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe” --unsafely-treat-insecure-origin-as-secure = http://yourDomain.com
(我不需要添加其他答案中指示的其他标志。)
其他标签:Google Geolocation API绕过https