Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Heroku子域设置相同的域cookie?_Javascript_Heroku_Cookies_Cross Domain_Subdomain - Fatal编程技术网

Javascript 如何使用Heroku子域设置相同的域cookie?

Javascript 如何使用Heroku子域设置相同的域cookie?,javascript,heroku,cookies,cross-domain,subdomain,Javascript,Heroku,Cookies,Cross Domain,Subdomain,我的前端在一个Heroku实例上运行:fe.herokuapp.com 我的后端运行在另一个实例上:be.herokuapp.com 当用户从前端登录时,我想设置一个相同的域cookie 我使用膝关节炎Cookie模块来设置cookie,比如: cookies.set("accessToken", token, { maxAge: 1000 * 60 * 24, signed: true, secure: process.env.NODE_ENV === "production",

我的前端在一个Heroku实例上运行:
fe.herokuapp.com

我的后端运行在另一个实例上:
be.herokuapp.com

当用户从前端登录时,我想设置一个相同的域cookie

我使用膝关节炎Cookie模块来设置cookie,比如:

cookies.set("accessToken", token, {
  maxAge: 1000 * 60 * 24,
  signed: true,
  secure: process.env.NODE_ENV === "production",
  httpOnly: true,
  domain: process.env.ORIGIN_HOSTNAME || "localhost"
})
如果有帮助,我将使用React前端和节点后端(使用Koa)

通过Postman,我的后端返回以下集合cookie头:

accessToken=<access_token>; path=/; expires=Sun, 01 Sep 2019 16:27:24 GMT; domain=.herokuapp.com; secure; httponly
accessToken=;路径=/;expires=太阳,2019年9月1日16:27:24 GMT;域名=.herokuapp.com;保护httponly
但是,通过我的React应用程序,我看不到任何设置的cookie头

我的前端正在使用带有
凭证=“include”
的同构unfetch库。(可能这需要
相同的来源
,因为它位于同一子域上?)

我的两个问题是:

  • 为什么我不能从后端将cookie中的域值设置为
    fe.herokuapp.com
  • 为什么我可以通过邮递员看到设置的cookie标题,但不能在我的前端应用程序中看到

  • 如果需要,很高兴发布更多代码片段。

    这个问题已经困扰了一段时间。我发现:

  • 需要向应用程序添加代理属性:
  • 使用sameSite属性扩展Cookie选项:
  • cookies.set(“accessToken”,令牌{
    最大值:1000*60*24,
    签名:对,
    安全:process.env.NODE_env==“生产”,
    httpOnly:true,
    域:process.env.ORIGIN|u主机名| |“localhost”,
    
    sameSite:“none”/
    herokapp.app
    列在
    Public suffix
    列表中,这意味着Cookie被阻止进入域
    “herokapp.com”


    您必须使用自定义域技术

    您曾经解决过这个问题吗?不幸的是,没有遇到同样的问题。当您解决这个问题时,请更新:)干杯!@cfree@PrateekThakur
    const app = new Koa()
    app.proxy = true
    
    cookies.set("accessToken", token, {
      maxAge: 1000 * 60 * 24,
      signed: true,
      secure: process.env.NODE_ENV === "production",
      httpOnly: true,
      domain: process.env.ORIGIN_HOSTNAME || "localhost",
      sameSite: 'none' // <-- add this
    })