AJAX请求默认使用HTTP还是HTTPS?如何判断及指定请求协议?
AJAX请求的协议相关问题解答
默认情况下AJAX使用的协议
AJAX请求默认会继承发起它的页面所使用的协议。举个例子:如果你的页面是通过http://localhost/xxx.html打开的,那你的AJAX请求就会用HTTP;如果页面是https://localhost/xxx.html,请求就会自动用HTTPS。你的代码里url用的是相对路径local.php,所以完全遵循这个规则。
如何判断当前请求使用的是HTTP还是HTTPS
有几个简单的方法可以确认:
- 浏览器开发者工具查看:按下F12打开开发者工具,切换到「Network」标签,找到这个POST请求,查看「Request URL」的开头部分,就能直接看到是
http://还是https://。 - 服务器端判断(PHP环境):在你的
local.php文件里,可以打印相关的服务器变量来判断:
前端的success回调里就能看到返回的结果。// 方法1:检查HTTPS变量 if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { echo "HTTPS"; } else { echo "HTTP"; } // 方法2:直接获取请求协议 echo $_SERVER['REQUEST_SCHEME']; // 输出 'http' 或 'https' - 前端提前预判:因为AJAX协议和页面一致,所以可以用
window.location.protocol获取当前页面的协议,它会返回http:或者https:,这样就能提前知道AJAX请求会用什么协议。
如何指定AJAX请求使用的协议
如果你想强制指定协议,直接在url里写绝对路径即可:
$.ajax({ type: "POST", cache: false, async: true, data: $('#form').serializeArray(), // 强制用HTTPS url: "https://your-domain.com/local.php", // 或者强制用HTTP // url: "http://your-domain.com/local.php", success: function(data) { console.log(data) }, error: function(data) { console.log(data) } });
如果你的域名是动态的,也可以用页面的主机地址拼接指定协议:
url: "https://" + window.location.host + "/local.php"
内容的提问来源于stack exchange,提问作者Rocket
相关产品推荐
相关产品推荐

