Ruby on rails 不允许请求来源:http://localhost:3001 使用滑轨5和ActionCable时

Ruby on rails 不允许请求来源:http://localhost:3001 使用滑轨5和ActionCable时,ruby-on-rails,ruby-on-rails-5,actioncable,Ruby On Rails,Ruby On Rails 5,Actioncable,Rails 5.0.0.beta2中的应用程序尝试使用ActionCable时出现服务器问题 使用localhost:3000很好,因为这是大多数ActionCable的默认设置。但是如果我尝试在端口3001上运行rails服务器,它会给我不允许的请求来源:http://localhost:3001 ActionCable文档提到使用类似于ActionCable.server.config.allowed\u request\u origins=[]http://localhost:3001“]

Rails 5.0.0.beta2中的应用程序尝试使用ActionCable时出现服务器问题

使用localhost:3000很好,因为这是大多数ActionCable的默认设置。但是如果我尝试在端口3001上运行rails服务器,它会给我
不允许的请求来源:http://localhost:3001

ActionCable文档提到使用类似于
ActionCable.server.config.allowed\u request\u origins=[]http://localhost:3001“]
如果我把它放在
config.ru

但这似乎是一个非常奇怪的地方。我觉得它应该可以放在初始化器文件中,或者我的development.rb环境配置文件中

为了进一步证明我的观点,应该允许它进入其中,设置
ActionCable.server.config.disable\u request\u forgery\u protection=true
可以忽略请求来源,即使我将其包括在development.rb中

为什么
ActionCable.server.config.disable\u request\u forgery\u protection
在development.rb中有效,而
ActionCable.server.config.allowed\u request\u origins
不起作用(但在config.ru中有效)

这不是一个紧迫的问题,因为我有几个解决方案。我只是想知道我是否遗漏了一些明显的东西,关于我认为这应该是如何工作的。

你可以把
Rails.application.config.action\u cable.allowed\u request\u origins=['http://localhost:3001“]
在您的development.rb中

有关的更多信息,请参见,您还可以将以下代码添加到
config/environments/development.rb
,以允许来自
http
https
的请求:

Rails.application.configure do
  # ...

  config.action_cable.allowed_request_origins = [%r{https?://\S+}]
end
config.action\u cable.allowed\u request\u origins
接受字符串或正则表达式数组作为:

Action Cable将只接受来自指定来源的请求,而 作为数组传递给服务器配置。起源可以是 字符串或正则表达式的实例,检查 比赛将进行

下面列出的正则表达式将匹配来自任何域的
http
https
URL,因此使用它们时要小心。使用哪一种只是偏好的问题

  • [%r{https?://\S+}]
    #取自
  • [%r{http[s]?://\s+}]
  • [%r{http://*},%r{https://*}]
  • [/http:\/\/*/,/https:\/\/*/]

对于我的颤振应用程序,请求来源为零。因此,需要在列表中添加
nil

我在
config/environments/development.rb
中添加了这段代码,它可以正常工作

config.action\u cable.allowed\u request\u origins=[/http:\/\/*/,/https:\/\/*/,/file:\/\/*/,'file://',nil]

谢谢。他们显然是在我的问题4天后更新的:-P,但如果你没有在这里回答,我不会看到它!