2015-08-12 4 views
0

Я получаю сообщение «Request-URI Too Large», когда я пытался вызвать функцию контроллера rails из javascript с большим параметром json. Я использую HTTP-сервер Webrick. Есть ли способ разрешить это без изменения сервера?Как сделать запрос ajax с большими параметрами?

У меня есть что-то вроде:

$.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' 
}); 
+1

Пожалуйста, пост все соответствующий код, чтобы мы воссоздать ошибку и, таким образом, лучше помочь вам. – Regis

+0

Привет @Regis, изменил сообщение. – Catherine

ответ

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

+0

Мне нужно, чтобы это было запрос на получение. Кроме того, я не уверен в изменении размера MAX_URI_LENGTH, потому что данные, которые я передаю, могут быть действительно большими. – Catherine

Смежные вопросы