Nginx的413错误没有得到浏览器

我觉得我的情况非常相似, 为什么一个413不能立即刷新到客户端呢? ,缩进的地方是我的情况不同

我有我的本地开发服务器返回状态413超大file upload和客户正在接收这些立即 – 根据我的要求。 我的错误和访问日志都显示这一点,但它需要大约6秒,所以我不知道我的浏览器是否正在等待发送图像? 然后收到它的413错误?

我的远程服务器与Nginx的版本相同,configuration也差不多,但413永远不会到达浏览器。

指示数据过大的错误将立即显示在错误日志中,并且访问日志中不显示任何内容。 浏览器继续发送数据,并且在30秒之后,413状态出现在访问日志中(并且再次出现在错误日志中),并且浏览器由于内部“连接重置”错误而超时。 这是我的情况与这个问题不同的地方。 我仍然得到(客户端旨在发​​送太大的身体:)在access.log中error.log和(POST / path / to / my / imageupload HTTP / 1.1 413),但我也得到一个没有状态的回应(在Chrome中状态失败或0)

当我curl相同的请求,我得到413错误响应。 哪个比赛在这个职位上回应了mgorven。

我看到mgorven说,在从服务器接收任何东西之前,浏览器等待发送所有内容。 这就是为什么它不接受413? 任何想法如何解决它? 如果我设置keepalive_requests为0会破坏什么? 像上传大图片(小于5MB)? 那么如何处理nginx 413错误而不显示nginx 413错误页面呢?

同样沿着同一个话题,当我尝试通过JavaScript上传时发生上述情况。 我的应用程序的一部分有一个Rails的上传,当它上传一个大文件,它只是丢弃连接。 但是我的本地盒子显示了nginx 413错误页面。 任何想法如何解决这个问题,只发送一个JSON回应?

keepalive_requests设置为0不会破坏任何内容,但会禁用持久连接(这可能会导致性能降低)。

你可以configurationnginx发送一个JSON响应,但是请注意,在发送请求体之前,你仍然需要客户端正确的行为并且检查响应。

/var/www/errors/413.json

 {"message": "Request Entity Too Large"} 

/etc/nginx.conf

 location /errors { types { application/json json; text/html html; text/html htm; } } error_page 413 /errors/413.json;