Rails / Devise:XHR返回401

时间:2016-10-11 19:53:31

标签: ruby-on-rails devise

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

我的应用程序的一页包含一个React应用程序,该应用程序通过XHR使用isomorphic-fetch库来请求数据。我一直在Safari中开发它,它运行良好,但在Chrome或Firefox中,当我尝试XHR get时,我收到HTTP 401消息。

看来不同的是,我在Safari上获得了一个设置会话cookie的“Set-Cookie”响应头,而在Chrome中我不是。

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

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

1 个答案:

答案 0 :(得分:5)

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

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

发送cookie。