2017-07-03 91 views
0

浏览器发送OPTIONS而不是GET/POST请求通过API请求跨域。我使用Laravel 5.4后端和前端,我采用了棱角分明4浏览器发送'OPTIONS'请求而不是GET/POST在角4中

我已经添加了一个Cors在routeMiddleware:

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', '[email protected]'); 
    Route::post('register', '[email protected]'); 
    Route::post('userInfo', '[email protected]_user_details'); 
}); 

可能的解决方案是什么?

回答

2

浏览器总是发送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(); 
}; 
相关问题