使用标头渲染JSON

Ily*_*lya 6 ruby json ruby-on-rails cors

我想cors在我的控制器中使用以下标头呈现JSON :

'Access-Control-Allow-Origin' = '*'.
Run Code Online (Sandbox Code Playgroud)

我试过这个:

def my_action
  render(json: some_params)
  response.headers['Access-Control-Allow-Origin'] = '*'
end
Run Code Online (Sandbox Code Playgroud)

但我有一个AbstractController::DoubleRenderError.有没有办法用标题呈现JSON?

gui*_*man 14

渲染后无法设置标头,因为响应已发送.因此,在没有意义之后更改标题,您会收到此错误.

尝试:

def my_action
  response.headers['Access-Control-Allow-Origin'] = '*'
  render(json: some_params)
end
Run Code Online (Sandbox Code Playgroud)


Mih*_*scu 5

这里的问题是您正在渲染响应,然后发送标头。
应该在发送响应后设置标头。

render通常应该是你行动的最后一行。

def my_action
  ...
  response.headers['Access-Control-Allow-Origin'] = '*'
  render json: some_params
end
Run Code Online (Sandbox Code Playgroud)