Javascript Http站点未检测到Chrome中的位置-问题
今天我们注意到了一个基于用户位置自动检测邮政编码的问题。它在其他浏览器(edge、IE、Firefox)中运行良好 我们必须将站点配置为https,然后它才能正常工作 例子:效果很好 哪里as不起作用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> <
<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”替换为实际要测试的源代码),该标志将处理