【问题标题】:Render JSON with header使用标头渲染 JSON
【发布时间】:2016-05-20 23:44:20
【问题描述】:

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

'Access-Control-Allow-Origin' = '*'.

我试过这个:

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

但我收到了AbstractController::DoubleRenderError。有没有办法用 headers 渲染 JSON?

【问题讨论】:

    标签: ruby-on-rails ruby json cors


    【解决方案1】:

    您不能在渲染后设置标头,因为已发送响应。所以在没有意义之后更改标题,你会得到这个错误。

    试试:

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

    RAILS 5 更新

    正如问题How do you add a custom http header? 中指出的那样,在rails 5 之后,您应该将标题设置如下:

    response.set_header('HEADER NAME', 'HEADER VALUE')
    

    【讨论】:

      【解决方案2】:

      这里的问题是您正在呈现响应,然后发送标头。
      您应该从不在发送响应后设置标头。

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

      def my_action
        ...
        response.headers['Access-Control-Allow-Origin'] = '*'
        render json: some_params
      end
      

      【讨论】:

        猜你喜欢
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-17
        • 2014-07-16
        相关资源
        最近更新 更多