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