I want to render JSON with the following cors
header in my controller:
'Access-Control-Allow-Origin' = '*'.
I tried this:
def my_action
render(json: some_params)
response.headers['Access-Control-Allow-Origin'] = '*'
end
but I got an AbstractController::DoubleRenderError
. Are there ways to render JSON with headers?
You can't set a header after render, because the response is sent. So change the headers after makes no sense and you get this error.
Try:
def my_action
response.headers['Access-Control-Allow-Origin'] = '*'
render(json: some_params)
end
UPDATE FOR RAILS 5
As pointed in the question How do you add a custom http header?, after rails 5 you should be setting the headers as following:
response.set_header('HEADER NAME', 'HEADER VALUE')
The issue here is that you are rendering the response and then sending the headers.
You should never set headers after the response is sent.
render
should be, usually, the last line of your action.
def my_action
...
response.headers['Access-Control-Allow-Origin'] = '*'
render json: some_params
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With