我有一个Laravel 5.3网站,各种页面都有ajax请求。因为我使用了
csrf_field()
功能,它们可以正常工作。但是有一个页面,ajax会产生以下错误:
Mixed Content: The page at 'https://example.com/fb/reports' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://example.com/fb/json?levelType=&id=&aggLevel=ad&start=&end='. This request has been blocked; the content must be served over HTTPS.
我的 JavaScript 代码看起来像这样:
var relUrl = '/fb/json/';
var payload = {
levelType: levelType,
id: id,
aggLevel: aggLevel,
start: start,
end: end
};
console.log(relUrl);
return $.ajax({
type: 'GET',
dataType: 'json',
data: payload,
url: relUrl,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
我已经阅读了大量关于这个错误的文章。我尝试了很多建议的解决方法,包括将相对URL更改为完整的https URL,或者以2个斜杠开头。
我甚至尝试更改我的Laravel路由工作方式,现在只使用查询字符串参数。
我研究了下面所有的文章(还有更多)。
另外,由于此ajax查询位于站点的密码保护部分(而那些有效的ajax查询位于站点的公共/开放部分),所以我认为这可能与问题有关。但是,我使用SSH
登录到生产服务器,并使用vim
暂时删除了需要任何身份验证的行,https错误仍然发生。
从这里开始,我可以采取哪些步骤进行进一步调试?我可以在Cloudways服务器上“tail”哪些日志?
Cloudflare是否可能会干扰任何内容(我怀疑,因为其他ajax查询都在https上工作)?
谢谢!