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
在axios默认设置中设置为truewithCredentials
包装配置尽可能宽松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;
}
}