Laravel 5.8 / VueJs 2 / Axios GET 请求不发送cookies(CORS,子域)

Laravel 5.8 / VueJs 2 / Axios GET request does not send cookies (CORS, subdomain)

设置

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

a.test.de
b.test.de

问题

AB 的 API 发送一个 GET 请求,但它总是发送没有 cookie 的请求,即使它应该发送。

因为端点是受保护的,所以我们总能得到 401 Unauthorized 回来。对 B 上不受保护的端点的请求不会导致任何问题,因为它们不需要 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;
    }
}

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

以后谁有这个问题:请阅读问题,你会看到我们已经尝试过的东西。请务必了解,对于 CORS,某些 Headers 需要来回发送才能允许发送 cookie。

抱歉打扰了....