Laravel 5.8/VueJs 2/Axios GET请求不发送Cookie(CORS,子域) 安装程序

Laravel 5.8/VueJs 2/Axios GET请求不发送Cookie(CORS,子域) 安装程序,laravel,cookies,axios,cross-domain,subdomain,Laravel,Cookies,Axios,Cross Domain,Subdomain,我们有一个域为test.de的服务器,两个应用程序a和B运行在同一台服务器上,但在子域上: a.test.de b.test.de 问题 A向B的API发送一个GET-请求,但它总是在不发送cookie的情况下发送请求,即使它应该这样做 因为端点是受保护的,所以我们总是返回401未经授权的。对B上未受保护的端点的请求不会引起任何问题,因为它们不需要cookie 我们尝试过的事情: withCredentials:true根据请求 withCredentials在axios默认设置中设置为tr

我们有一个域为
test.de
的服务器,两个应用程序
a
B
运行在同一台服务器上,但在子域上:

a.test.de
b.test.de
问题
A
B
的API发送一个
GET
-请求,但它总是在不发送cookie的情况下发送请求,即使它应该这样做

因为端点是受保护的,所以我们总是返回
401未经授权的
。对
B
上未受保护的端点的请求不会引起任何问题,因为它们不需要cookie

我们尝试过的事情:
  • withCredentials:true
    根据请求
  • withCredentials
    在axios默认设置中设置为true
  • laravel cors
    包装配置尽可能宽松

尝试下面的中间件。。。如果没有帮助,我将删除答案;)


似乎我们的服务器上存在权限问题,导致前端代码无法更新,因此,
with credentials
选项无法通过

无论谁在未来有这个问题:请阅读问题,你会看到我们尝试过的东西。重要的是要理解,对于CORS,某些头需要来回发送,以允许发送cookie


很抱歉听到嗡嗡声……

您试过中间件吗?如果你想要什么样的中间件,我可以给你一个答案?我们已经准备好了一些,但是没有一个与问题相关。一个添加了标题。。。(就像laravel cors软件包一样)这真的很奇怪。我有几件事要做:1。“test.de”作为域而不是“.test.de”2。尝试其他浏览器,看看它是否在那里工作。3.如果没有帮助,请发布Chrome DevTools cookies屏幕截图,也许cookies本身有问题(错误的日期?错误的时间?)谢谢@Pavelint,我们测试了不同的浏览器。从我读到的内容来看,它应该是
.test.de
,但我会试试看。Cookie设置正确,因为它与应用程序本身上的受保护路由一起工作,而不是其他应用程序(我猜是由于CORS)。谢谢,但它仍然不发送任何Cookie。
<?php

return [
    'supportsCredentials' => true,
    'allowedOrigins' => ['*'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,
];

<?php

namespace App\Http\Middleware;

use Closure;
use Symfony\Component\HttpFoundation\StreamedResponse;

class ModifyHeadersMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next( $request );
        if($response instanceof StreamedResponse) {
            $response->headers->set('Access-Control-Allow-Origin', '*' );
            $response->headers->set( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Authorization, Accept, Application' );
            $response->headers->set( 'Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS' );
        } else {
            $response->header( 'Access-Control-Allow-Origin', '*' );
            $response->header( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Authorization, Accept, Application' );
            $response->header( 'Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS' );
        }

        return $response;
    }
}