Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Nginx return custom json
error_page 400 404 405 =200 @40*_json;
location @40*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Not Found"}';
}
error_page 500 502 503 504 =200 @50*_json;
location @50*_json {
default_type application/json;
return 200 '{"code":"1", "message": "Unknown Error"}';
}
@gowtham-sai

This comment has been minimized.

Copy link

gowtham-sai commented Feb 2, 2017

Can you please explain this ?

=200 @40*_json;

@brod-ie

This comment has been minimized.

Copy link

brod-ie commented Feb 9, 2017

@Gowtham95india It's for general 40X or 50X errors (aka a 404 will output '{"code":"1", "message": "Not Found"}'

@benoj

This comment has been minimized.

Copy link

benoj commented May 15, 2017

You are returning 200 codes for all errors.. seems slightly odd.

@mcmahonjohn

This comment has been minimized.

Copy link

mcmahonjohn commented May 26, 2017

@benoj That can actually bypass browsers like Chrome which would intercept errors and display a pop-up on their own to the user. So by returning a 200 code, but with data highlighting it's an error or something, it can be helpful to maintain control over what the browser shows the user.

@rjmunro

This comment has been minimized.

Copy link

rjmunro commented Jun 19, 2017

Returning 200 means that anything that isn't a straightforward web browser will not know it has an error. Things like search engines may assume that the page is correct and useful and try to index it. archive.org may try to store it. Assistive technology for disabled people may tell it's users the wrong thing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.