首页 > 解决方案 > 我的 Ajax 函数发出双重请求

问题描述

这是我检查优惠券代码是否有效的功能。

function checkCoupon(str){

   if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        } else { // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function() {
            if (this.readyState==4 && this.status==200) {
               alert('success');
            }
        }

        xmlhttp.open("GET","https://www.example.com/inc/checkCoupon?id=45&coupon="+str,true);

        xmlhttp.send();
    }

<input onchange="checkCoupon(this.value)" placeholder="Coupon">用来称呼这个。

问题是,它发出了两个不同的调用。页面的第一个https://版本,然后它立即被取消,之后它再次调用http://由于混合内容而被拒绝的版本。

我还检查了它我有多个功能来做同样的工作,但我在这个页面上只有一个功能。

这是 Inspect Element >> https://imgur.com/a/fQnXuQ1中网络选项卡的快照

上面是https://,下面是http://

谢谢您的帮助。

标签: javascriptajax

解决方案


当您发出 https 请求时,您似乎有一些活动的 http 内容。有关详细信息,请参阅此处

不过有一个问题,为什么不首先强制整个站点的通信通过 https 进行呢?这可以在 htaccess 文件中完成。例子:

#Rewrite everything to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

推荐阅读