我想在控制器中使用以下cors
标头呈现JSON:
'Access-Control-Allow-Origin' = '*'.
我试过了:
def my_action
render(json: some_params)
response.headers['Access-Control-Allow-Origin'] = '*'
end
但我得到了AbstractController::DoubleRenderError
。有没有办法用标题呈现JSON?
答案 0 :(得分:7)
您无法在渲染后设置标头,因为会发送响应。因此,在没有意义之后更改标题会导致此错误。
尝试:
def my_action
response.headers['Access-Control-Allow-Origin'] = '*'
render(json: some_params)
end
铁路更新5
正如问题How do you add a custom http header?中所指出的,在rails 5之后,您应该将标题设置如下:
response.set_header('HEADER NAME', 'HEADER VALUE')
答案 1 :(得分:2)
这里的问题是您正在呈现响应然后发送标题 发送响应后,永远不会设置标头。
render
通常应该是操作的最后一行。
def my_action
...
response.headers['Access-Control-Allow-Origin'] = '*'
render json: some_params
end