我正在本地开发环境(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类似

07-26 06:54
查看更多