我正在做一个将表单提交到不同服务器的站点。对于上传进度跟踪,我使用:服务器端 NginxHttpUploadProgressModule 和客户端 - jquery-upload-progress。我已经通过将表单提交到同一台服务器来测试设置,并且一切正常。提交到另一台服务器不会显示进度跟踪(跨域脚本)。经过数小时的调查,我得出的结论是 JQuery 生成的 GET 请求有问题。
查询如下所示:
http://domain.com/upload/progress/?X-Progress-ID=39b2825934dbb2f33fe936df734ff840&callback=jsonp1249230337707&_=1249230345572
从 NginxHttpUploadProgressModule 站点:
对此位置的 HTTP 请求必须具有 X-Progress-ID 参数或 X-Progress-ID HTTP 标头,其中包含您在相关跟踪区域的上传/POST 请求中指定的唯一标识符。如果您使用 X-Progress-ID 作为查询字符串参数,请确保它是 URL 中的最后一个参数。
所以,我的问题是如何将 X-Progress-ID 参数附加到 jquery GET 请求的末尾或设置 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) {
...