Javascript Http站点未检测到Chrome中的位置-问题

Javascript Http站点未检测到Chrome中的位置-问题,javascript,google-maps,google-chrome,http,geolocation,Javascript,Google Maps,Google Chrome,Http,Geolocation,今天我们注意到了一个基于用户位置自动检测邮政编码的问题。它在其他浏览器(edge、IE、Firefox)中运行良好 我们必须将站点配置为https,然后它才能正常工作 例子:效果很好 哪里as不起作用 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAdGQKI4sEj5TZAjNCds422V_ZHevD45Fo"></script> <

今天我们注意到了一个基于用户位置自动检测邮政编码的问题。它在其他浏览器(edge、IE、Firefox)中运行良好 我们必须将站点配置为https,然后它才能正常工作

例子:效果很好 哪里as不起作用

  <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAdGQKI4sEj5TZAjNCds422V_ZHevD45Fo"></script>
 <%--   <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>--%>

 <%--     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>--%>
    <script type="text/javascript">


        function ShowMessages() {

            debugger;
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(success);
            } else {
                alert("Geo Location is not supported on your current browser!");
            }
            function success(position) {
                debugger;
                var lat = position.coords.latitude;
                var lng = position.coords.longitude;
                var latlng = new google.maps.LatLng(lat, lng);
                var geocoder = geocoder = new google.maps.Geocoder();
                geocoder.geocode({ 'latLng': latlng }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        if (results[1]) {

                            var searchAddressComponents = results[0].address_components,
                             searchPostalCode = "";
                            $.each(searchAddressComponents, function () {
                                if (this.types[0] == "postal_code") {
                                    searchPostalCode = this.short_name;
                                }
                            });

                            document.getElementById('hidden1').value = searchPostalCode
                            __doPostBack('', '');


                        }
                    }
                });
            }

        }

函数ShowMessages(){
调试器;
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(成功);
}否则{
警报(“当前浏览器不支持地理位置!”);
}
功能成功(职位){
调试器;
var lat=位置坐标纬度;
var lng=位置坐标经度;
var latlng=新的google.maps.latlng(lat,lng);
var geocoder=geocoder=new google.maps.geocoder();
geocoder.geocode({'latLng':latLng},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[1]){
var searchAddressComponents=结果[0]。地址\组件,
searchPostalCode=“”;
$。每个(searchAddressComponents,function(){
if(此.types[0]=“邮政编码”){
searchPostalCode=this.short\u name;
}
});
document.getElementById('hidden1')。value=searchPostalCode
__doPostBack('','');
}
}
});
}
}
如有任何帮助/解决方法,将不胜感激


编辑:除了谷歌API,还有其他可行的替代方案吗?

您不能将HTML5地理定位API用于非安全连接,如下所示:

从Chrome 50开始,Chrome不再支持获得 使用HTML5地理定位API从交付的页面获取用户位置 通过非安全连接。这意味着制作 地理位置API调用必须从安全上下文(如 HTTPS

但是,可以使用or,也可以使用其他,尽管从长远来看不建议使用。见下文:

有许多回退选项可用于获取用户的 不受此更改影响的位置,如谷歌地图 Geolocation API、GeoIP(例如,还有其他基于地理位置的API) 解决方案),并由用户输入邮政编码。然而,我们强烈反对 建议最佳路径,以确保持续访问地理位置 就是移动到HTTPS


来源:

Chrome 50
中引入的新安全规则不会向没有
传输加密的站点发送位置信息

是适用于映射API问题的替代方案

恢复到以前版本的Chrome(50)也是一个解决方案,但在Web开发中,这样做相当困难

但事实是,目前只有Chrome
映射API
方面存在这样的问题,其他浏览器仍然支持
(这让我在短期内安心)


但迟早,其他浏览器也可能会采用这种方式,这对现有用户来说可能是一个大问题,不像我。因为这是一个长期的过程(在我的例子中),所以最好开始开发并迁移到https站点,而不是在http中,不管在处理这些站点时有什么方法。

在不安全的来源上不推荐强大的功能。

Chrome Security最初将其发送到各种浏览器开发邮件列表。请参阅在blink-dev上弃用电子邮件的原始意图。这是基于为强大的新功能选择安全来源的原始想法

提案

我们希望开始将这些概念应用到已经发布但不满足(新的,目前不存在的)需求的功能中。特别是,这大约要求功能强大的功能只能在“安全源”(如
HTTPS
)上访问,其中完整的祖先链也是安全的

他们已开始要求这些现有功能的安全来源:

地理定位-从M50起需要安全的来源
设备运动/定向
电磁辐射
getUserMedia
AppCache

与Progression一样,我们希望根据使用阈值,从最低使用率开始,逐步将这些功能迁移到更高的使用率。我们还希望在用户体验中逐渐指出,对于非安全来源,这些功能是不推荐的

这些特性中的每一个的弃用策略都不是确定的,并且可能因特性而异。我们目前不知道阈值是多少,也不知道这些特性在哪种来源上使用了多少。我们正在收集数据,并将在我们有数据时报告。除了最终的否决外,目前根本没有明确的计划。我们打算以此来激发公众对处理这种反对的最佳方式的讨论

测试不推荐的强大功能

功能被弃用后,如果您是需要在没有有效证书的服务器上继续测试功能的开发人员,则有两个选项:

localhost
被视为HTTP上的安全源站,因此如果您能够从localhost运行服务器,您应该能够在该服务器上测试该功能。 您可以使用
--不安全地将不安全的源代码视为安全=”运行chromehttp://example.com“
标志(将“example.com”替换为实际要测试的源代码),该标志将处理