我有一个运行在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配置有什么问题吗?
非常感谢你的帮助。
1条答案
按热度按时间oxcyiej71#
我不知道如何让浏览器为下一个请求保存跨站点cookie-尽管我尝试了很多方法,包括在本地部署SSL证书(使用
mkcert
)但后来发现,我不需要。如果我实现了与生产中相同的设置,即
nginx
web服务器使用套接字文件为puma
和flutter
提供服务,那么所有请求都被视为SAMEORIGIN
。因此,
CORS
甚至没有出现在图片中。因此,与跨站点cookie相关的问题也不存在。缺点是,我不能在开发的时候热加载flutter web应用程序。必须手动重新构建并重新加载浏览器。