Cookies AngularJS和Laravel-缺少(记住)cookie的跨域CORS/XHR请求

Cookies AngularJS和Laravel-缺少(记住)cookie的跨域CORS/XHR请求,cookies,angularjs,xmlhttprequest,cross-domain,laravel,Cookies,Angularjs,Xmlhttprequest,Cross Domain,Laravel,当我不使用chrome中的--disable web security选项时,我的CORS/XHR请求在请求头中缺少memory_xyz cookie。如果启用该选项,则remember_xyz cookie将包含在请求头中,并且一切正常 作为解决方法,我目前正在通过基本身份验证标头发送身份验证凭据。但我认为这不是我们想要的或正确的方式 我如何获得请求头中包含的memory cookie 编辑: 在chrome的网络控制台中,我可以看到以下内容: (不带--在chrome中禁用web安全选项)

当我不使用chrome中的--disable web security选项时,我的CORS/XHR请求在请求头中缺少memory_xyz cookie。如果启用该选项,则remember_xyz cookie将包含在请求头中,并且一切正常

作为解决方法,我目前正在通过基本身份验证标头发送身份验证凭据。但我认为这不是我们想要的或正确的方式

我如何获得请求头中包含的memory cookie


编辑:
在chrome的网络控制台中,我可以看到以下内容:

(不带--在chrome中禁用web安全选项)

记住cookie由laravel在第一个响应头中发送。但不包含在下一个请求的标题中。为什么?

在实际请求触发之前,每个请求都具有飞行前请求的选项。飞行前请求是否可能以某种方式删除/破坏cookie

(使用--在chrome中禁用web安全选项)

记住cookie由laravel在第一个响应头中发送,并将由angular在下一个请求头中发送。一切都很好。


编辑2:
是否由我将响应头中的cookie包含到请求头中?如果是,为什么我不必在chrome中启用“-disable web security”选项来执行此操作?


我做错了什么


谢谢大家!

我不确定是否直接回答了你的问题,但我想试试看。您确实需要在客户端和服务器端为CORS设置某些头

客户机需要知道如何发送Cookie头,否则会将其删除。对于jQuery,这意味着在ajax调用中设置
withCredentials
参数。查看更多信息。这听起来像是你正在努力解决的问题

在服务器端,您可能需要确保已设置请求

例如,当我在Laravel 4中使用CORS时,我有一个过滤器为每个响应添加一些标题:

App::after(function($request, $response)
{
    // Note that you cannot use wildcard domains when doing CORS with Authorization!
    $response->headers->set('Access-Control-Allow-Origin', 'http://dev.domain.local');
    $response->headers->set('Access-Control-Allow-Credentials', 'true');
    $response->headers->set('Access-Control-Allow-Headers', 'Authorization, X-Requested-With');
});
在控制器中,我还有一个选项请求,用于响应飞行前请求。这方面的一个例子是:

public function optionsComplex()
{
    $response = Response::make(null, 200);
    $response->headers->set('Allow', 'GET, PUT, DELETE');
    $response->headers->set('Access-Control-Allow-Methods', 'GET, PUT, DELETE');
    return $response;
}

希望能有所帮助。

谢谢!毕竟我是那样做的。最近我发现了barryvdh/laravel cors,它似乎工作得很好。