我遇到了Chrome无法通过我们内部使用的各种PHP应用程序提交POST / GET表单请求的麻烦。这似乎始于Chrome76。Firefox或IE不会发生此问题,这很奇怪。
提交表单时,预期的行为是在等待服务器的响应时在Dev Network控制台中查看请求。但是在Chrome中,该请求不会在网络控制台中发送或看到。标签中的Chrome进度轮将永远逆时针旋转。
我已经检查了服务器上的Apache请求日志,但从未收到过发送给它的请求,因此我认为它是客户端(例如Chrome)上的东西。
如果我尝试使用Postman手动提交表单,那么它将起作用并发送期望的回复。
我尝试使用JavaScript提交表单,但是看到了相同的行为。我尝试过更改表单的enctype以及调整meta标签标题,但没有任何更改。
标题
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="csrf-token" content="xxxx">
表格
<form method="POST" action="https://homestead.test/login">
<input type="hidden" name="_token" value="xxxx">
<div class="form-group row">
<label for="username" class="col-md-4 col-form-label text-md-right">Username</label>
<div class="col-md-6">
<input id="username" type="text" class="form-control" name="username" value="" required autofocus>
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
</div>
</div>
<div class="form-group row">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" >
<label class="form-check-label" for="remember">Remember Me</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">Login</button>
</div>
</div>
</form>
有没有一种方法可以更好地在客户端调试表单提交?在发送其他浏览器不执行且失败的HTTP请求之前,Chrome是否进行了某些检查?如果设置错误,是否可以完全重新加载/重置Chrome?隐身模式应该在没有任何扩展名的情况下加载,并且行为相同,因此我认为这不是导致问题的恶意扩展。
答案 0 :(得分:0)
在您的php服务器中,在您的头文件
中添加以下行 header('Access-Control-Allow-Origin: *');
应该在您要接收发帖请求的所有页面中
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
在将帖子数据从本地服务器发送到远程服务器时,需要在远程服务器上启用 CORS-跨域资源共享。
此代码适用于大多数情况,请测试并告诉我是否可以解决。