我正在构建一个角度应用程序,它依赖于一个单独的Laravel,并试图注册一个新用户。
Laravel5.1 身份验证提供了许多方便的方法来注册用户,但它们适合于在整个应用程序中使用Laravel,这意味着blade template前端。
我将这个添加到我的routes.php文件中:
$router->controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController'
]);路由/auth/register是为我提供的,因此我尝试创建一个新用户:
来自DHC的:
我们很抱歉,但是Chrome不允许获得重定向响应体。
来自我的应用程序:
XMLHttpRequest无法加载http://dde.localhost/auth/register。请求被重定向到“http://dde.localhost/home”,对于需要飞行前的跨源请求是不允许的。
我发现原因在于/auth/register调用:postRegister()在RegistersUsers.php中的方法:
App\Http\Controllers\Auth\AuthController@postRegister
看上去像是:
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
return redirect($this->redirectPath());
}这有一个重定向,我猜通常会重定向到刀片欢迎模板什么的。
如果我注释掉重定向,只返回一个200 response,
return Response::make('user created', 200);我收到一个CORS错误:
http://dde.localhost/auth/register。请求的资源上没有“访问-控制-允许-原产地”标题。
这很奇怪,因为我正在通过BarryCORS中间件路由所有路由:
Route::group(['middleware' => 'cors'], function(\Illuminate\Routing\Router $router) { 上面说*的起源是允许的。
因此,问题是:我如何为一个只为API使用Laravel的前端应用程序设置注册和auth?
对于我的前端应用程序中的每个调用,似乎都有两个对register的调用:
first :似乎第一个请求具有访问控制头,它是一个选项http请求:
Request URL:http://dde.localhost/auth/register
Request Method:OPTIONS
Status Code:200 OK
//Response Headers:
access-control-allow-headers:ACCEPT, CONTENT-TYPE
access-control-allow-methods:GET, POST, PUT, DELETE
access-control-allow-origin:http://localhost:1337
Allow:GET,HEAD,POST,PUT,PATCH,DELETE第二种:在第二种情况下,POST最终被调用,并且带有有效负载,但是访问控制头被剥离。
Request URL:http://dde.localhost/auth/register
Request Method:POST
Status Code:500 Internal Server Error
//Response Headers: there are no access-control-allow methods attached
//Payload
{username: "testname", password: "some random password"}为什么会这样呢?
发布于 2015-10-21 18:41:47
CORS调用之前的选项请求是标准的,它精确地检查服务器的响应头。
如果您要获得HTTP 500,那是因为服务器有问题。如果是只为CORS,您将得到一些40倍的错误。看看你的拉里应用程序日志,服务器端有东西坏了。
https://stackoverflow.com/questions/33266103
复制相似问题