当我尝试从具有大json参数的javascript调用rails控制器函数时,我收到'Request-URI Too Large'错误。我正在使用Webrick http服务器。有没有办法在不更改服务器的情况下解决这个问题?
我有类似的东西:
$.ajax({
url: 'application/get_list',
data: { options : options_json, selected_option : selected_option_string},
success: function(data) {
// Insert the data to a div (returned data is a select tag with options)
},
type: 'get'
});
答案 0 :(得分:1)
最简单的解决方法是将其更改为POST
请求,并设置处理该操作的操作,然后您不会遇到此错误。
如果您需要GET
请求,可以使用以下内容将名为webrick.rb
的文件添加到config\initializers
目录:
if defined?(WEBrick::HTTPRequest)
WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240)
end
如果您不断收到错误,请继续增加号码10240
,直至其生效。
由于您的评论表明它必须是GET
请求,因此除了设置MAX_URI_LENGTH
之外别无选择。来自WEBrick source:
if @request_line.bytesize >= MAX_URI_LENGTH and @request_line[-1, 1] != LF
raise HTTPStatus::RequestURITooLarge
end
如果您需要非常长的URI,请将其设置为荒谬的内容,例如9223372036854775807