我在跨域上传项目中使用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'
},....
答案 0 :(得分:13)
您的customHeaders
选项未正确定义。 customHeaders
是request
选项的属性,详见request
option documentation。
您的Fine Uploader集成代码应该如下所示:
var manualuploader = new qq.FineUploader({
request: {
endpoint: "path/to/your/server",
customHeaders: {
"Authorization": "Basic YXVjaGFkbWluOkNieWxjZTY3"
}
}
});
另外,请记住,jQuery的ajaxSetup
对Fine Uploader的ajax / xhr调用没有影响。 Fine Uploader在内部完全不使用jQuery。 Fine Uploader提供的可选jQuery插件简单地包装了原生javascript库,通过支持与jQuery和jQuery插件相关的语法,可以轻松地将其用作jQuery插件。
此外,请注意,这些标题不会与IE9及更早版本的上传请求一起传递,因为IE9及更早版本不支持通过ajax / xhr上传。在这些浏览器中,会提交一个以iframe为目标的表单。如果是表单提交,则无法将自定义标头与请求关联。