我正在本地开发环境(Ubuntu 16.04)中的网站上工作,并通过http://localhost.example/在Chrome(58)上测试该网站-连接到本地Web服务器。
运行此JavaScript:
$(document).ready(function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
});
触发此错误:
[弃用] getCurrentPosition()和watchPosition()不再起作用
在不安全的起源上。要使用此功能,您应该考虑
将您的应用切换到安全来源,例如HTTPS。看到
https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins有关更多详细信息。
这是为什么?我了解面向公众的网站需要运行HTTPS才能使地理位置库/功能正常工作。我们有许多在HTTPS上运行类似代码的公共网站。
但是根据depreciation documentation:
本地主机被视为通过HTTP的安全来源,因此如果您能够
要从本地主机运行服务器,您应该能够测试
该服务器上的功能。
上面的Javascript在通过http://localhost.example/test-page/加载的HTML正文中内联运行-为什么我在Chrome中收到“不安全的来源”错误?
Firefox(53)会按预期显示浏览器中的访问位置提示。
最佳答案
Chrome认为http上的localhost安全。当您通过http使用hostnme localhost.example时,这不被认为是安全的。
注意:Firefox的行为与Firefox 55类似