获取向 Rails 服务器发出请求的 API
Posted
技术标签:
【中文标题】获取向 Rails 服务器发出请求的 API【英文标题】:Fetch API making requests to rails server 【发布时间】:2016-12-29 10:17:34 【问题描述】:使用 fetch API 调用 Rails 服务器会导致一些使用 ajax 时不会出现的问题。
CSRF,使用 jquery,rails gem 会自动将 CSRF 令牌放入请求中,有没有办法通过 fetch 完成类似的效果?
会话 cookie 不会持续重新加载页面。我正在使用会话令牌来存储当前用户会话并登录,然后在应该保留会话时刷新擦除会话。
一直无法找到有关此主题的任何资源,并且我在通过 ajax 进行调用时成功使用了完全相同的代码,所以我知道问题与我切换到 fetch 相关
【问题讨论】:
【参考方案1】:我正在努力解决这个问题。当我弄清楚时,我会更新这个答案。但基本思想是您需要传递“X-CSRF-Token”标头。如果您使用的是 jQuery,则可以使用此代码获取 csrf 令牌:
$('meta[name=csrf-token]').attr('content')
默认情况下,fetch
不包括 cookie。您必须通过此选项:credentials: 'same-origin'
。看到这个问题:Fetch API with Cookie
【讨论】:
以上是关于获取向 Rails 服务器发出请求的 API的主要内容,如果未能解决你的问题,请参考以下文章
使用Javascript请求获取向RouteXL发送x-www-form-urlencoded请求[重复]
使用过期令牌发出同时 API 请求时如何避免多个令牌刷新请求