Rails/Devise:XHR返回401

Dav*_*Ham 1 ruby-on-rails devise

我有一个使用Devise进行身份验证的Rails应用程序.我通过通常的Rails视图进行身份验证,大多数应用程序都是使用通常的Rails ActionView页面完成的.

我的应用程序的一页包含一个React应用程序,它通过XHR使用isomorphic-fetch库来请求数据.我一直在Safari中开发它,它工作正常,但在Chrome或Firefox中,当我尝试XHR获取时,我收到HTTP 401消息.

似乎差异在于我在Safari上获得了设置会话cookie的"Set-Cookie"响应头,而在Chrome中我不是.

这是我尝试过的:*添加X-CSRF-Token到我的AJAX获取请求*设置config.http_authenticatable_on_xhr为true并设置config.navigational_format = [:html, :json]

这是一个新的Rails 5应用程序.我有一个类似的Rails 4应用程序,其中XHR工作正常.如何让我的XHR在这里工作?

Dav*_*Ham 5

我得到了这个工作.我检查了我以前的应用程序,该应用程序使用jQuery进行AJAX调用.当我换成fetchjquery-ujs,它起作用了!我看到我的问题是它没有发送带有请求的会话cookie.我研究了如何使用isomorphic-fetch,并找到了github/fetch文档.当我像这样构建我的请求时,它可以工作:

fetch('/my_resource.json?param=someparam', {
  'credentials': 'same-origin'
})
Run Code Online (Sandbox Code Playgroud)

必须发送cookie.