Я делаю сайт, который отправляет форму на другой сервер. Для отслеживания хода загрузки я использую: для серверной части NginxHttpUploadProgressModule и для клиентской стороны - jquery-upload-progress . Я проверил настройки, отправив форму на тот же сервер, и все работало нормально. Отправка на другой сервер не показывает отслеживание хода выполнения (междоменный сценарий). После нескольких часов изучения этого вопроса я пришел к выводу, что запрос GET, сгенерированный JQuery, является ошибочным.
Запрос выглядит так:
http://domain.com/upload/progress/?X-Progress-ID=39b2825934dbb2f33fe936df734ff840&callback=jsonp1249230337707&_=1249230345572
С сайта NginxHttpUploadProgressModule:
HTTP-запрос к этому местоположению должен иметь либо параметр X-Progress-ID, либо HTTP-заголовок X-Progress-ID, содержащий уникальный идентификатор, указанный в вашем запросе загрузки / POST в соответствующую отслеживаемую зону. Если вы используете X-Progress-ID в качестве параметра строки запроса, убедитесь, что в URL указан аргумент LAST .
Итак, мой вопрос: как добавить параметр X-Progress-ID в конец запроса GET jquery или установить заголовок X-Progress-ID?
Это не работает с jsonp (код из jquery.uploadProgress.js):
beforeSend: function(xhr) {
xhr.setRequestHeader("X-Progress-ID", options.uuid);
}
В настоящее время запрос генерируется следующим образом (код из jquery.uploadProgress.js):
jQuery.uploadProgress = function(e, options) {
jQuery.ajax({
type: "GET",
url: options.progressUrl + "?X-Progress-ID=" + options.uuid,
dataType: options.dataType,
success: function(upload) {
...