ruby-on-rails `Rails 7 --API`会话cookie设置-但随后不发送回

zzwlnbp8  于 2023-06-25  发布在  Ruby
关注(0)|答案(1)|浏览(174)

我有一个运行在localhost:3000上的rails --api后端和一个运行在localhost:8080上的Flutter Web应用程序。
根据文档,我在Rails中配置了会话中间件和CORS,如下所示:

(config/application.rb)

config.session_store :cookie_store, key: '_interslice_session', domain: 'localhost:3000'
config.middleware.use ActionDispatch::Cookies
config.middleware.use config.session_store, config.session_options

(config/initializers/cors.rb)

Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'http://localhost:8080'
    resource '*',
    headers: :any,
    credentials: true,
    methods: [:get, :post, :options, :put, :path]
  end
end

现在,问题来了。我可以验证一个用户。我甚至在响应头中返回了一个Set-cookie(如下所示)

但是我似乎没有在后续的请求中得到这个Cookie

1.那么,我如何让浏览器(Chrome / Firefox)保存此Cookie,以便在每次后续请求时都将其发送回来?
1.从Flutter发出请求时,是否需要设置HTTP头?
1.或者,我的Rails配置有什么问题吗?
非常感谢你的帮助。

oxcyiej7

oxcyiej71#

我不知道如何让浏览器为下一个请求保存跨站点cookie-尽管我尝试了很多方法,包括在本地部署SSL证书(使用mkcert
但后来发现,我不需要。如果我实现了与生产中相同的设置,即nginx web服务器使用套接字文件为pumaflutter提供服务,那么所有请求都被视为SAMEORIGIN
因此,CORS甚至没有出现在图片中。因此,与跨站点cookie相关的问题也不存在。
缺点是,我不能在开发的时候热加载flutter web应用程序。必须手动重新构建并重新加载浏览器。

相关问题