簡體   English   中英

我的Ajax函數正在提出雙重要求

[英]My Ajax function is making double request

這是我檢查優惠券代碼是否有效的功能。

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://版本,但由於內容混合而被拒絕。

我也檢查過它有多個功能可以完成相同的工作,但是此頁面上只有一個功能。

這是檢查元素>> https://imgur.com/a/fQnXuQ1中“網絡”選項卡的快照

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

謝謝您的幫助。

發出https請求時,似乎有一些活動的http內容。 有關更多信息,請參見此處

但是,有一個問題,為什么不首先只是強制整個網站的通信通過https? 這可以在htaccess文件中完成。 例:

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

.htaccess文件中確實存在問題。 實際上,由於.htaccess導致了這種類型的問題。 我將回答一半的問題,因為我不知道另一半的答案。

這是我的.htaccess代碼,用於重定向到www然后是https://

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

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

其實沒關系。 我錯過的是它下面的另一個代碼。 下面的代碼用於強制在URL中使用尾部斜杠。

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.example.com/$1/ [L,R=301]

如您所見,我錯過的是此代碼的最后一行。 我已將斜杠強行插入到http://www.exaple.com ,而實際上應該是https://www.exaple.com 我錯過了http:// ,實際上應該是https://

我不知道的另一半答案是:它仍然對每個AJAX查詢調用都提出雙重要求。 我對此有一個猜測,這一定是由於non-wwwwww重定向,然后是http://https://重定向。 雖然這仍然是我的猜測。

多虧@Martin,我至少知道了我的錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM