![](/img/trans.png)
[英]Error with Chrome extension - “Mixed Content: This request has been blocked; the content must be served over HTTPS”
[英]Mixed content jQuery ajax HTTPS request has been blocked on Laravel
我认为这个问题对某人来说很容易,对我来说将是一个面对面的情况。
我有一个 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 上工作)?
谢谢!
总结:我需要替换var relUrl = '/fb/json/';
使用var relUrl = '/fb/json';
(删除尾部斜杠)因为这是我的 Laravel web.php
路由文件所期望的。
在 Chrome 控制台中,我注意到https
XHR 请求被“取消”并替换为http
请求。
于是我用ssh
登录远程生产服务器,用vim
暂时禁用认证要求。
然后在 Chrome 控制台中,我使用绝对 https URL 定义并运行了一个新的 ajax 命令,最后是查询字符串参数。 那行得通(没有混合内容错误)。 然后我尝试了一个这样的相对 URL,它也有效。
即使是没有有效负载或查询字符串参数或尾部斜杠的相对 URL 也能工作。
然后我再次添加了尾部斜杠,但它不起作用。
我仍然希望有一种更简单的方法来跟踪或调试重定向路径或发生的任何事情。 我仍然觉得我笨拙地(几个小时后)偶然发现了答案,而不是知道如何可靠地剖析这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.