You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React自定义SSR应用Cookie认证的本地开发测试方法咨询

React自定义SSR应用Cookie认证的本地开发测试方法咨询

兄弟,我太懂你这种本地开发的痛点了!没真实域名就存不上Cookie,确实卡得人难受,给你几个我日常开发里亲测好用的解决办法:

  • 本地Hosts映射模拟真实域名
    直接改本地的hosts文件,把自定义域名指向127.0.0.1:

    • Windows路径:C:\Windows\System32\drivers\etc\hosts
    • Mac/Linux路径:/etc/hosts
      加一行内容:127.0.0.1 my-test-app.com,保存后重启浏览器,就能用my-test-app.com访问你的SSR服务了,Cookie会正常绑定到这个自定义域名下。
  • 配置开发服务的跨域凭证允许
    如果你的SSR服务和接口服务是分开的本地服务,得确保接口服务的响应头放开凭证权限:
    比如用Express写的接口可以这么加中间件:

    app.use((req, res, next) => {
      // 允许请求来源的域名,别用*,要指定具体的本地域名或localhost
      res.header('Access-Control-Allow-Origin', req.headers.origin);
      // 允许携带Cookie
      res.header('Access-Control-Allow-Credentials', true);
      res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
      next();
    });
    

    这样跨服务请求时Cookie就能正常携带和存储了。

  • 浏览器临时放宽Cookie限制(应急用)
    要是不想改配置,Chrome里可以临时调整设置:
    地址栏输入chrome://flags/#same-site-by-default-cookies,把这个选项改成Disabled,重启浏览器后,localhost下的Cookie也能正常存储和发送。注意开发完记得改回去,别影响日常上网的安全设置。

  • 用代理工具统一域名前缀
    http-proxy-middleware把SSR服务和接口服务代理到同一个域名下,比如让http://localhost:3000/api指向接口服务,http://localhost:3000指向SSR服务,这样两者同域,Cookie自然能正常工作。
    简单的Express代理配置例子:

    const { createProxyMiddleware } = require('http-proxy-middleware');
    app.use('/api', createProxyMiddleware({
      target: 'http://localhost:5000', // 你的接口服务地址
      changeOrigin: true,
      credentials: true // 允许携带Cookie
    }));
    

这些方法都是我在项目里踩过坑后总结的,哪个顺手用哪个,要是还有细节卡壳随时说!

火山引擎 最新活动