Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用以下Javascript(Ajax)代码,可以在http上正常工作,但不能在https上工作_Javascript_Jquery_Ajax - Fatal编程技术网

使用以下Javascript(Ajax)代码,可以在http上正常工作,但不能在https上工作

使用以下Javascript(Ajax)代码,可以在http上正常工作,但不能在https上工作,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用下面的代码重定向,如果用户的国家不是印度,那么重定向它,否则保持在同一页上 <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function preloadFunc() { $.ajax('http://ip-api.c

我使用下面的代码重定向,如果用户的国家不是印度,那么重定向它,否则保持在同一页上

<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
   <script type="text/javascript">
   
    function preloadFunc()
    {
        $.ajax('http://ip-api.com/json')
  .then(
      function success(response) {
        if(response.country!="India")
        {window.location.replace("https://www.google.com/");}
    }
    window.onpaint = preloadFunc();
</script>

函数preload func()
{
$.ajax('http://ip-api.com/json')
.那么(
功能成功(响应){
如果(答复.国家!=“印度”)
{window.location.replace(“https://www.google.com/");}
}
window.onpaint=preload函数();

尝试从https启动的站点执行http调用时会发生什么情况:

jquery-1.9.1.min.js:5混合内容:“https://*****”处的页面是通过https加载的,但请求的是不安全的XMLHttpRequest端点”http://ip-api.com/json“”此请求已被阻止;内容必须通过HTTPS提供

如果您尝试使用https进行此呼叫,您会得到:

jquery-1.9.1.min.js:5获取403(禁止)

如果你在浏览器中直接尝试,你会得到

{"status":"fail","message":"SSL unavailable for this endpoint, order a key at https://members.ip-api.com/"}
顺便说一句,您的代码中还有两个JS语法错误。下面是一个更正的版本(恐怕它对通过https返回ip内容没有帮助)


函数preload func()
{
$.ajax('https://ip-api.com/json')
.那么(
函数成功(响应){console.log(响应);
如果(答复.国家!=“印度”){
window.location.replace(“https://www.google.com/");
}
})
}
window.onpaint=preload函数();

尝试从https启动的站点执行http调用时会发生什么情况:

jquery-1.9.1.min.js:5混合内容:“https://*****”处的页面是通过https加载的,但请求的是不安全的XMLHttpRequest端点”http://ip-api.com/json“”此请求已被阻止;内容必须通过HTTPS提供

如果您尝试使用https进行此呼叫,您会得到:

jquery-1.9.1.min.js:5获取403(禁止)

如果你在浏览器中直接尝试,你会得到

{"status":"fail","message":"SSL unavailable for this endpoint, order a key at https://members.ip-api.com/"}
顺便说一句,您的代码中还有两个JS语法错误。下面是一个更正的版本(恐怕它对通过https返回ip内容没有帮助)


函数preload func()
{
$.ajax('https://ip-api.com/json')
.那么(
函数成功(响应){console.log(响应);
如果(答复.国家!=“印度”){
window.location.replace(“https://www.google.com/");
}
})
}
window.onpaint=preload函数();

有两个问题:

  • 当使用安全方法(https)加载页面时,无法使用非安全方法(http)发出ajax请求。因此,如果使用https加载页面,则只能通过https进行ajax调用

  • 执行此操作时,发生的另一个问题是使用
    window.location.replace
    时发生的安全冲突。replace方法在浏览器中重写当前页面历史记录并重定向页面。但限制是目标的来源应与页面的服务位置相同

  • 如果要从当前原点导航,请使用以下方法之一重定向

    window.location = 'https://www.google.com'
    
    window.location.href = 'https:..www.google.com'
    

    有两个问题:

  • 当使用安全方法(https)加载页面时,无法使用非安全方法(http)发出ajax请求。因此,如果使用https加载页面,则只能通过https进行ajax调用

  • 执行此操作时,发生的另一个问题是使用
    window.location.replace
    时发生的安全冲突。replace方法在浏览器中重写当前页面历史记录并重定向页面。但限制是目标的来源应与页面的服务位置相同

  • 如果要从当前原点导航,请使用以下方法之一重定向

    window.location = 'https://www.google.com'
    
    window.location.href = 'https:..www.google.com'
    

    该端点不支持
    https
    直接点击并检查


    端点不支持
    https
    直接点击并检查


    面对相同的问题它看起来根本不受支持..?我使用它只是为了确保它在重定向到新URL之前不会加载以前的URL。请编写重定向代码,如window.location=“”然后再试一次。问题不在于重新定位,而在于通过https加载代码时调用。面对相同的问题,它看起来根本不受支持。我使用此选项只是为了确保它在重定向到新URL之前不会加载以前的URL。编写重定向代码,如window.location=“”然后再试一次。问题不在于重新定位,而在于通过https加载代码时调用。有没有一种方法可以在http上使用此api,就像我可以在后端将https转换为http一样?您可以在服务器中创建一个反向代理并通过它发送请求,有没有一种方法可以使用此方法http上的api以及我是否可以在后端将https转换为http,rest保持不变?您可以在服务器中创建反向代理并通过该代理发送请求,