浏览器正在API域请求中发送OPTIONS
而不是GET/POST
请求来跨域。我正在使用Laravel 5.4作为后端和前端我正在使用Angular 4
我在routeMiddleware中添加了Cors:
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
api.php(路线):
Route::group(['middleware' => ['cors']], function(){
Route::post('login', 'ApiController@login');
Route::post('register', 'ApiController@register');
Route::post('userInfo', 'ApiController@get_user_details');
});
可能的解决方案是什么?
答案 0 :(得分:3)
浏览器总是发送OPTIONS
请求,这实际上是一个安全测量的预检请求。当服务器理解此请求并以200代码响应时,浏览器将实际请求(使用实际方法GET,POST,...)发送到服务器。
您的服务器需要了解如何回复预检请求(使用OPTIONS方法的请求)。
您可以在此处找到如何在nodeJS服务器中实现此功能
module.exports = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "*");
res.header("Access-Control-Allow-Methods", "GET, POST", "PUT", "DELETE");
next();
};