我认为这个问题对某人来说很容易,对我来说将是一个面对面的情况。
我有一个 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 服务器上“跟踪”哪些日志?
Cloudflare 可能会干扰什么(我怀疑,因为其他 ajax 查询都在 https 上工作)?
谢谢!