有很多因素,爲什麼出現這種情況。錯誤可能會發生,因爲您沒有訪問標題,瀏覽器會獲取該標題並阻止您的請求。
當您的服務器遇到像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