使用传单和本地主机拒绝位置访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用传单和本地主机拒绝位置访问相关的知识,希望对你有一定的参考价值。
我在传单中遇到了locate函数的问题。
我正在使用express来通过本地主机提供我的应用程序。当我从我自己的计算机访问它时,它工作,但当我在网络上使用不同的计算机时,它拒绝访问位置。
在网络和权限方面,我不是很了解。任何帮助,将不胜感激!
App.js用于表达
var express = require("express"),
app = express(),
router = express.Router(),
port = process.env.PORT || 3000,
bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static(__dirname + "/public"));
app.use(express.static(__dirname + "/views"));
app.use(express.static(__dirname + "/plugins"));
app.get("/", function(req, res){
res.sendFile("index.html");
});
app.listen(port, function(){
console.log("app is running on port " + port);
});
Index.js:
mymap.locate({setView: true})
.on("locationfound", function(e){
if(currentLoc){
currentLoc.remove();
currentLocErr.remove();
}
currentLoc = L.marker([e.latitude, e.longitude]).bindPopup('Your location');
currentLocErr = L.circle([e.latitude, e.longitude], e.accuracy/2, {
weight: 1,
color: 'blue',
fillColor: '#cacaca',
fillOpacity: 0.5
});
mymap.addLayer(currentLoc);
mymap.addLayer(currentLocErr);
})
.on("locationerror", function(e){
alert("Location access denied.");
});
答案
来自docs:
locate(<Locate options> options?):尝试使用Geolocation API找到用户...请注意,如果您的页面不使用HTTPS,则此方法将在现代浏览器中失败
那么在你的情况下会发生什么,你的localhost是一个可靠的来源,你的浏览器将允许你使用浏览器本身提供的Geolocation API,没有问题。
但是,如果您尝试从网络中的另一台计算机访问它,则应将代码发布为HTTPS,以使其正常工作,否则会引发您遇到的错误。
你可以阅读更多关于Geolocation API here的信息。
以上是关于使用传单和本地主机拒绝位置访问的主要内容,如果未能解决你的问题,请参考以下文章