Javascript 调用API默认为http:这会导致它被Safari阻止
我正在使用一个API在谷歌地图上生成PIN,但它在Safari上因为提供不安全的内容而被阻止。我正在调用API的https:version,但它表示内容来自http:versionJavascript 调用API默认为http:这会导致它被Safari阻止,javascript,api,safari,Javascript,Api,Safari,我正在使用一个API在谷歌地图上生成PIN,但它在Safari上因为提供不安全的内容而被阻止。我正在调用API的https:version,但它表示内容来自http:version function callSpotAPI(lat, lng){ $.ajax({ type: "POST", url:"https://www2.itemlocator.net/ils/locatorJSON", data: { //AP
function callSpotAPI(lat, lng){
$.ajax({
type: "POST",
url:"https://www2.itemlocator.net/ils/locatorJSON",
data: {
//API data
},
dataType: "jsonp",
success: function(data) {
//Handle Success
},
error: function() {
//Handle Error
}
})
}
此脚本将在Safari上返回以下警告:
[已阻止]不允许处的页面从运行不安全的内容
我省略了发送的实际数据,以防万一,这是敏感的,比抱歉更安全,但这个应用程序在Chrome和Firefox上运行良好,这让我很困惑。当我在ajax调用中显然有https:时,为什么它要尝试从http:运行内容?对此我不是很确定,但有时safari会因为证书问题而给出此错误。您可以尝试将“”添加到safari证书中 您请求的URL正在通过HTTP重定向到非HTTPS URL进行响应
正确的URL似乎是
https://www2.itemlocator.net/ils/locatorJSON/
(末尾有一个/
。所以在谷歌搜索了一段时间后,对我有效的解决方案就是将这个meta标签添加到站点:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
我不是很精通元标签,但该应用程序现在正在工作,所以这很好。如果有人认为这样做有什么问题,请告诉我,这样我就不会把事情搞砸,但现在这是我的解决方案。这是我在Safari上需要做的事情,只会影响我的计算机吗?我需要一个解决方案,将为每个人工作,因为这是一个公共网站没有任何错误的证书,该网址。如果有,错误消息不会抱怨
http://etc
(不带s
)。数据类型:“jsonp”、
和类型:“POST”、
不兼容。JSONP请求总是GET请求。。。有时候我真的很讨厌编码,哈哈。谢谢你的帮助,我很感激!
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">