8

我在跨域上传项目中使用 FineUploader 3.7。一切都很好,直到我将代码移动到具有简单身份验证的客户端 DEV 服务器。当预检请求发送到服务器时,有没有办法在表单中嵌入身份验证信息?

我曾尝试在标头中嵌入基本身份验证,但不起作用。请参考以下代码:

$.ajaxSetup({
    headers: {
        'Authorization': "Basic YZVjaGFmbWluOkNieWxjBTY3"
    },
    beforeSend: function (jqXHR, settings) {
        jqXHR.setRequestHeader('Authorization', 'Basic YZVjaGFmbWluOkNieWxjBTY3');
    }
});

更重要的是,我尝试设置自定义标题但没有运气:

var manualuploader = new qq.FineUploader({
  customHeaders: {
    'Authorization': 'Basic YXVjaGFkbWluOkNieWxjZTY3'
  },....
4

1 回答 1

13

您的customHeaders选项定义不正确。 customHeaders是选项的一个属性request,详见request选项文档

您的 Fine Uploader 集成代码应如下所示:

var manualuploader = new qq.FineUploader({
    request: {
        endpoint: "path/to/your/server",
        customHeaders: {
            "Authorization": "Basic YXVjaGFkbWluOkNieWxjZTY3"
        }
    }
});

另外,请记住,jQueryajaxSetup对 Fine Uploader 的 ajax/xhr 调用没有影响。Fine Uploader 内部根本不使用 jQuery。Fine Uploader 提供的可选 jQuery 插件简单地包装了原生 javascript 库,通过支持与 jQuery 和 jQuery 插件相关的通用语法,使其可以轻松用作 jQuery 插件。

另外,请注意这些标头不会与 IE9 和更早版本的上传请求一起传递,因为 IE9 和更早版本不支持通过 ajax/xhr 上传。在这些浏览器中,会提交一个以 iframe 为目标的表单。在表单提交的情况下,无法将自定义标头与请求相关联。

于 2013-08-27T04:28:00.983 回答