[英]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-www
到www
重定向,然后是http://
到https://
重定向。 雖然這仍然是我的猜測。
多虧@Martin,我至少知道了我的錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.