Ruby on rails Rails/designe:XHR返回401

Ruby on rails Rails/designe:XHR返回401,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个Rails应用程序,它使用Desive进行身份验证。我通过常用的Rails视图进行身份验证,大多数应用程序都是通过常用的Rails ActionView页面完成的 我的应用程序的一个页面包括一个React应用程序,它通过XHR和同构获取库请求数据。我一直在Safari中开发它,它工作得很好,但在Chrome或Firefox中,我在尝试XHR get时会收到HTTP401消息 不同之处在于,在Safari上,我得到了一个设置会话Cookie的“Set Cookie”响应头,而在Chrome

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

我的应用程序的一个页面包括一个React应用程序,它通过XHR和同构获取库请求数据。我一直在Safari中开发它,它工作得很好,但在Chrome或Firefox中,我在尝试XHR get时会收到HTTP401消息

不同之处在于,在Safari上,我得到了一个设置会话Cookie的“Set Cookie”响应头,而在Chrome上,我没有

以下是我尝试过的: *将
X-CSRF-Token
添加到我的AJAX获取请求 *将xhr上的
config.http\u authenticable\u设置为true,并设置
config.navigational\u格式=[:html,:json]


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

我让它工作。我检查了我以前的应用程序,它使用jQuery进行AJAX调用。当我将
fetch
替换为
jquery-ujs
时,它成功了!我发现我的问题是,它没有随请求一起发送会话cookie。我研究了如何使用
同构fetch
实现这一点,并找到了文档。当我这样构造请求时,它会起作用:

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

我得把饼干送过去。

这是我的工作。我检查了我以前的应用程序,它使用jQuery进行AJAX调用。当我将
fetch
替换为
jquery-ujs
时,它成功了!我发现我的问题是,它没有随请求一起发送会话cookie。我研究了如何使用
同构fetch
实现这一点,并找到了文档。当我这样构造请求时,它会起作用:

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

必须发送cookies。

您是否检查了不同浏览器提交的标题?可能缺少某些内容。您是否检查了不同浏览器提交的标题?也许少了些什么。