Php Laravel REST Api不向不同域发送cookie?
我想从我的身份验证服务(Passport)将一个仅http的cookie从我的Laravel Rest API发送到位于世界任何地方的消费前端。但是,没有cookie被发送到前端 我尝试使用withCookie()和cookie()使用json响应设置cookie。那没用 这位于kernel.php中,它是Laravel Passport文档(使用Javascript部分使用您的API),但是,它不会随响应一起发送Php Laravel REST Api不向不同域发送cookie?,php,laravel,rest,api,cookies,Php,Laravel,Rest,Api,Cookies,我想从我的身份验证服务(Passport)将一个仅http的cookie从我的Laravel Rest API发送到位于世界任何地方的消费前端。但是,没有cookie被发送到前端 我尝试使用withCookie()和cookie()使用json响应设置cookie。那没用 这位于kernel.php中,它是Laravel Passport文档(使用Javascript部分使用您的API),但是,它不会随响应一起发送 'web' => [ // Other middleware...
'web' => [
// Other middleware...
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
这不会发送cookie
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
$credentials = request(['email', 'password']);
if(!Auth::attempt($credentials))
return response()->json([
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
我希望它发送一个带有令牌的http cookie,但是它不工作。浏览器不接受存储或读取另一个域的cookie
注意:domain.tld可以访问sub.domain.tld的cookies,但反之亦然。浏览器不接受存储或读取另一个域的cookies
注意:domain.tld可以访问sub.domain.tld的cookies,但反之亦然。您不能为其他域设置cookies。Passport使用API令牌,而不是cookie。是的,但我想将其存储在仅http的cookie中。我不知道还有其他安全方法吗?使用您的API的客户端将负责以某种方式存储令牌。您不能为其他域设置Cookie。Passport使用API令牌,而不是cookie。是的,但我想将其存储在仅http的cookie中。我不知道还有其他安全方法吗?使用API的客户端将负责以某种方式存储令牌。那么我该怎么做呢?在同一个域上使用cookie。否则你做不到,这有什么意义?用户明确表示,这是一种可接受的行为,它会发送一个带有我传出响应的laravel_令牌cookie。是的,但浏览器不会将该cookie发送到其他域上的网站,因此Iit不会意识到该会话。让你的应用程序在同一个域上运行。那么我该怎么做呢?在同一个域上使用cookies。否则你做不到,这有什么意义?用户明确表示,这是一种可接受的行为,它会发送一个带有我传出响应的laravel_令牌cookie。是的,但浏览器不会将该cookie发送到其他域上的网站,因此Iit不会意识到该会话。使应用程序在同一域上运行。