Ruby 用机架发送两个相同的标题(访问控制允许原点)

Ruby 用机架发送两个相同的标题(访问控制允许原点),ruby,ajax,header,rack,Ruby,Ajax,Header,Rack,如何使用机架兼容应用程序设置多个访问控制允许源站标题 规范说我应该返回[状态、标题、正文]数组作为结果。Headers是头的哈希:)。所以我不能两次设置相同的标题 headers = {} headers["Access-Control-Allow-Origin"] = "http://my.domain1.com" headers["Access-Control-Allow-Origin"] = "http://my.domain2.com" 不会有用的 我该怎么办?如何发送两个相同的头?使

如何使用机架兼容应用程序设置多个
访问控制允许源站
标题

规范说我应该返回
[状态、标题、正文]
数组作为结果。Headers是头的哈希:)。所以我不能两次设置相同的标题

headers = {}
headers["Access-Control-Allow-Origin"] = "http://my.domain1.com"
headers["Access-Control-Allow-Origin"] = "http://my.domain2.com"
不会有用的


我该怎么办?如何发送两个相同的头?

使用数组散列非常常见,请尝试:

headers = {
  "Access-Control-Allow-Origin" => %w[
    http://my.domain1.com
    http://my.domain2.com
  ]
}

我猜它应该是
{“访问控制允许来源”=>['a','b']*“\n”}

综上所述,相关部分为“”,其中:

根据规范,
accesscontrolalloworigin
头可能只有一个资源

我已经通过定制中间件解决了这个问题:

class CORS
  ORIGINS = %w[http://localhost:3001 http://localhost:3002].freeze

  # ...

  def call(env)
    @status, @headers, @response = @app.call(env)
    @headers['Access-Control-Allow-Origin'] = assign_allow_origin_header(env['HTTP_ORIGIN'])
    [@status, @headers, @response]
  end

  private

  def assign_allow_origin_header(origin)
    ORIGINS.include?(origin) ? origin : 'null'
  end
end

在问之前我已经测试过了:)不,它对我没有帮助。我猜它应该是
{“Access Control Allow Origin”=>['a','b']*“\n”}
,明天将测试它检查编辑。我看了看RFC,应该猜到是“;”。早上好我不明白你在哪里找到的
在:DHo-ho中,它依赖于应用程序服务器。我已经用rainbows和thin进行了测试,看起来只有rainbows支持带有
\n
分隔符的此类标题。另外,在某些浏览器中似乎没有正确实现“Access Control Allow Origin”。这个答案很古老,但似乎是一个合理的尝试方法。
[ 'a', 'b' ] * ";"
%w[a b].join(';')
class CORS
  ORIGINS = %w[http://localhost:3001 http://localhost:3002].freeze

  # ...

  def call(env)
    @status, @headers, @response = @app.call(env)
    @headers['Access-Control-Allow-Origin'] = assign_allow_origin_header(env['HTTP_ORIGIN'])
    [@status, @headers, @response]
  end

  private

  def assign_allow_origin_header(origin)
    ORIGINS.include?(origin) ? origin : 'null'
  end
end