【问题标题】:How to set cookies in localhost - ReactJS如何在本地主机中设置 cookie - ReactJS
【发布时间】:2022-09-24 20:03:21
【问题描述】:

我知道已经有很多类似的问题,但我还没有找到解决方案。
我设法在服务器上部署了我的 React 应用程序,并且 cookie 工作正常。 Cookie 由服务器设置设置cookie然后自动包含在所有后续请求中
但是,当我在 localhost 上启动它时,我无法让它工作:在服务器设置它之后,cookie 不包含在请求中。我想我尝试了我在网上找到的所有可能的解决方案以及它们的任何可能组合。
我使用的命令是\"start\": \"yarn run start\"
我尝试过的事情:

  • 当服务器设置cookie时,我尝试设置它:
    1) 无论有无安全的选项
    2) 与领域设置为 null、false、\'\' 并且根本不设置
    3) 有无http-only
  • 我尝试使用本地主机:3000,127.0.0.1:3000我的.site.it.localhost:3000
  • 我尝试在主机文件中设置127.0.0.1 my.site.it 并连接到我的.site.it:3000
  • 我尝试按照this guide在localhost中使用https,并将启动命令修改为
    \"start\": \"set HTTPS=true&&set SSL_CRT_FILE=./cert.crt&&set SSL_KEY_FILE=./cert.key&&yarn run start\"
    并且还要
    \"start\": \"set HOST=my.site.it&&set HTTPS=true&&set SSL_CRT_FILE=./cert.crt&&set SSL_KEY_FILE=./cert.key&&yarn run start\"
  • 我尝试设置credentials: \'same-origin\'credentials: \'include\'
  • 我试图设置有凭据真假

有什么我想念的吗?还有什么可以尝试的吗?
先感谢您

  • 看来您的服务器有不同的域作为前端
  • 您是否看到 set-cookie 来自服务器的响应标头?
  • @HananZamalin 是的,我明白了
  • @ChinhNguyen 我应该如何修改它?
  • 你在本地的服务器地址是什么?

标签: reactjs cookies react-redux localhost


【解决方案1】:

我列出了您必须检查的所有内容。尝试一次,这应该可以。

服务器:

    app.use(cookieParser()); // To parse the incoming cookies
    const corsOptions = {
        credentials: true,
        origin: "http://localhost:3000" // Add your frontend origin here (Don't add '/' at the end)
    };
    app.use("*", cors(corsOptions)); // npm i cors

还可以使用以下方式设置您的 cookie:

    await res.cookie("accessToken", token, {
        maxAge: ACCESS_TOKEN_EXPIRY * 1000,
        httpOnly: true
    });

客户端(将其用于您的 API 调用):

   export default axios.create({
       baseURL: 'http://localhost:5000/',
       withCredentials: true,
   });

这是确切的选项集,应该可以。否则,也许在此处添加您的代码以进行调试。

【讨论】:

  • 它没有用。另外,我需要在本地主机和生产服务器上都可以使用的东西......
【解决方案2】:

Cookie 是一个复杂的小字符串,公平地说,这是“最终”的唯一方法 了解他们是为了阅读IETF RFC 6265《HTTP 状态管理机制》,无可替代, 但是,MSDN 确实有一些很好的信息。注意:浏览器在处理和拒绝 cookie 方面确实略有不同。

有“相互使用某些 cookie 属性的条款”,尤其是 __Host- Prefix 强制包含压缩属性“Secure”和 path=/,其他属性可以 导致cookie非法并被浏览器拒绝。

许多 web 程序员的共识是 localhost 不能设置 https/ssl 安全 cookie, 但是,阅读 RFC 6265 的以下部分应该会创建一个将通过 https 接受的 cookie。 但我必须警告说,如果使用 localhost 环境设置 https cookie,那么这是否可行还没有足够的共识,因为该活动完全取决于软件品牌和版本。

4.1.2.5。这安全的属性

4.1.2.6。 HttpOnly 属性(压缩属性)

4.1.2.7。 SameSite 属性

4.1.3.1。这 ”__安全的-“ 字首

4.1.3.2。这 ”__主持人-“ 字首

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 2015-04-19
    • 1970-01-01
    • 2011-09-08
    • 2015-06-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多