有很多因素,为什么出现这种情况。错误可能会发生,因为您没有访问标题,浏览器会获取该标题并阻止您的请求。
当您的服务器遇到像500,403,401等内部错误时,您也可能会在您的laravel应用中为请求生命周期添加标头(如在中间件中过滤所有api请求),但有时会出现错误500或甚至echo或dd()会中断整个请求生命周期,并返回浏览器无法通过ajax调用解释的错误,因此它会丢失隐式添加的标题,从而导致浏览器返回到预检请求错误。
我建议的唯一解决方案是在代码中正确的错误处理,并在响应中返回错误并以json格式返回。
public function someController extends Controller{
public function Foo(Request $request){
$input_bag = [
'some input' => first_$input,
'another important input' => $second_input,
];
$i = 0;
foreach ($input_bag as $key => $value) {
$value = trim($value);
if (empty($value)) {
$error_bag[$i] = "$key empty";
$i++;
} else {
//
}
}
//filter of false or null values
if (array_filter($error_bag)) {
return response()->json($error_bag, 400);
}
}
这将在运行代码时返回错误的json响应。并且充分利用尝试捕获并返回适当的响应可以使您的调试生活变得轻松。
图书馆[Laravel 5中的CORS](https://github.com/barryvdh/laravel-cors)解决了OP的问题,正如他在回答中提到的那样,当我试图编辑它时,审查队列被删除。 – TylerH