javascript - 我的 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://
。
谢谢您的帮助。
解决方案
当您发出 https 请求时,您似乎有一些活动的 http 内容。有关详细信息,请参阅此处。
不过有一个问题,为什么不首先强制整个站点的通信通过 https 进行呢?这可以在 htaccess 文件中完成。例子:
#Rewrite everything to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
推荐阅读
- android - WorkManager 实例即使在应用程序被卸载后仍保持活动状态 (?)
- java - 在不使用额外反斜杠的情况下读取路径文件
- php - 拉拉维尔。在foreach循环中将不正确的参数传递给destroy()
- excel - excel conditional formatting validate date
- kettle - 跳过在 Kettle 上读取的 csv 中的第一行
- elasticsearch - 如何查询elasticsearch的大于和小于?
- visual-studio-code - 在 VS.code 中使用现有的文档格式化程序
- java - Apache Camel File IO on linux
- node.js - How can I compare content of two web pages?
- sql-server - Linux SQL Server:如何允许远程连接?