Php 如何在Symfony中设置和发送Cookie,而前端在ReactJS中?
我正在编写一个应用程序,该应用程序在localhost:3001中使用ReactJs作为前端,在localhost:3000中使用Symfony作为后端,为了实现跨源通信,我在Symfony中使用“cors bundle”。 现在我想在用户登录时创建一个Cookie,但它似乎没有被创建 谢谢你的帮助 这是用户登录时Symfony中的代码:Php 如何在Symfony中设置和发送Cookie,而前端在ReactJS中?,php,reactjs,symfony,cookies,setcookie,Php,Reactjs,Symfony,Cookies,Setcookie,我正在编写一个应用程序,该应用程序在localhost:3001中使用ReactJs作为前端,在localhost:3000中使用Symfony作为后端,为了实现跨源通信,我在Symfony中使用“cors bundle”。 现在我想在用户登录时创建一个Cookie,但它似乎没有被创建 谢谢你的帮助 这是用户登录时Symfony中的代码: use Symfony\Component\HttpFoundation\Cookie; $cookie = new Cookie( 'my_cookie
use Symfony\Component\HttpFoundation\Cookie;
$cookie = new Cookie( 'my_cookie', 1, strtotime('tomorrow') );
$res = new Response();
$res->headers->setCookie( $cookie );
return new JsonResponse($res);
这是我也尝试过的:
$res->headers->setCookie(Cookie::create('my_cookie', 1));
return new JsonResponse($res);
应该是
$res = new JsonResponse();
$res->headers->setCookie($cookie);
返回$res 应该是
$res = new JsonResponse();
$res->headers->setCookie($cookie);
返回$res 从Symfony 2开始,我没有体验到任何不同。这里已经回答了这个问题:
您是否检查过浏览器的开发人员工具以查看响应中是否有cookie?具体地看一下网络选项卡并监视AJAX响应的标题。我在Symfony 2中没有体验到任何不同。这里已经回答了这个问题: 您是否检查过浏览器的开发人员工具以查看响应中是否有cookie?具体查看网络选项卡并监视AJAX响应的标题。您需要的是:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class YourClass extends AbstractController {
public function yourMethod(Request $request) {
$cookie = new Cookie(
"cookie_name_here", // Cookie name
1, // Cookie content
(new DateTime('now'))->modify("+1 day"), // Expiration date
"/", // Path
"localhost", // Domain
$request->getScheme() === 'https', // Secure
false, // HttpOnly
true, // Raw
'Strict' // SameSite policy
);
$res = new JsonResponse();
$res->headers->setCookie($cookie);
return $res;
}
}
这里需要注意的事情
$request->getScheme()=='https'
作为参数计算true
,并且仍将被发送。如果要读取React中的值,请将其设置为false
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class YourClass extends AbstractController {
public function yourMethod(Request $request) {
$cookie = new Cookie(
"cookie_name_here", // Cookie name
1, // Cookie content
(new DateTime('now'))->modify("+1 day"), // Expiration date
"/", // Path
"localhost", // Domain
$request->getScheme() === 'https', // Secure
false, // HttpOnly
true, // Raw
'Strict' // SameSite policy
);
$res = new JsonResponse();
$res->headers->setCookie($cookie);
return $res;
}
}
这里需要注意的事情
$request->getScheme()=='https'
作为参数计算true
,并且仍将被发送。如果要读取React中的值,请将其设置为false
配置的值是多少?@msg我尝试了true和false,都不起作用。配置的值是多少?@msg我尝试了true和false,都不起作用。