Laravel 7,AJAX 身份验证请求出现混合内容错误
Laravel 7, Mixed Content error on AJAX Auth request
在我的 Laravel 7 网站上,我有桌面版和移动版,服务器的 运行ning Apache,由启用了强制 HTTPS 的 Cloudflare(灵活 SSL/TLS)代理。
在桌面版中,身份验证是通过 <form>
标准进行的,它可以正常工作,但是会给出 [Deprecation] Synchronous XMLHttpRequest
警告。
在移动版中,身份验证是通过 AJAX 请求执行的。单击时会执行身份验证,但请求本身 returns 具有混合内容响应,因此 .done()
函数不会 运行。还有几个非授权 ajax 功能,可以完美运行。此外,使用 <form>
进行身份验证使其工作,但我更愿意继续使用 AJAX。
所以,我的猜测是登录控制器中的某些东西导致了问题,但我无法找出具体原因。
请求(已设置 CSRF 令牌):
$.ajax({
url: '/login',
type: "POST",
data: {
email: $('input[name="login"]').val(),
password: $('input[name="password"]').val(),
}
}).fail(function (xhr) {
$('.alert-text').html('Wrong E-Mail or password');
}).done(function (msg) {
//
});
登录控制器:
protected function authenticated()
{
if (auth()->user()->active) {
return redirect()->secure(Session::get('current_page'));
} else {
auth()->logout();
return view('inactive_account');
}
}
注销时也会发生完全相同的事情。
我试过在控制器中注释掉 return redirect
,但没有帮助。
对于遇到此问题的人,问题出在 SSL 证书中。
我有一个来自 Cloudflare 的自签名,但是 none 在服务器本身上,所以服务器一直在返回不安全的响应。因此,要解决此问题,需要在服务器上获取 LE 证书并将 Cloudflare SSL/TLS 加密设置为完全。
在我的 Laravel 7 网站上,我有桌面版和移动版,服务器的 运行ning Apache,由启用了强制 HTTPS 的 Cloudflare(灵活 SSL/TLS)代理。
在桌面版中,身份验证是通过 <form>
标准进行的,它可以正常工作,但是会给出 [Deprecation] Synchronous XMLHttpRequest
警告。
在移动版中,身份验证是通过 AJAX 请求执行的。单击时会执行身份验证,但请求本身 returns 具有混合内容响应,因此 .done()
函数不会 运行。还有几个非授权 ajax 功能,可以完美运行。此外,使用 <form>
进行身份验证使其工作,但我更愿意继续使用 AJAX。
所以,我的猜测是登录控制器中的某些东西导致了问题,但我无法找出具体原因。
请求(已设置 CSRF 令牌):
$.ajax({
url: '/login',
type: "POST",
data: {
email: $('input[name="login"]').val(),
password: $('input[name="password"]').val(),
}
}).fail(function (xhr) {
$('.alert-text').html('Wrong E-Mail or password');
}).done(function (msg) {
//
});
登录控制器:
protected function authenticated()
{
if (auth()->user()->active) {
return redirect()->secure(Session::get('current_page'));
} else {
auth()->logout();
return view('inactive_account');
}
}
注销时也会发生完全相同的事情。
我试过在控制器中注释掉 return redirect
,但没有帮助。
对于遇到此问题的人,问题出在 SSL 证书中。
我有一个来自 Cloudflare 的自签名,但是 none 在服务器本身上,所以服务器一直在返回不安全的响应。因此,要解决此问题,需要在服务器上获取 LE 证书并将 Cloudflare SSL/TLS 加密设置为完全。