我试图用ASP.NET WebAPI后端实现jQuery Bluimp文件上传控件(从这里:https://github.com/blueimp/jQuery-File-Upload),但有一点麻烦。后端最终将支持移动应用程序,所以它已经为CORS通过启用此功能(在WebApiConfig
的Register
法):jQuery BlueImp文件上传授权
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
整个后端被锁定与被重写SendAsync
认证处理方法看request.Headers.Authorization
,拉出参数并认证请求,这是我的问题所在。无论我尝试什么(包括从此SO链接:jQuery-File-Upload by blueimp - additional headers),我都无法控制将标题发送到后端,从而阻止我在允许其保存前验证上载请求。我试过的各种方法是:
$(function() {
$('#fileupload').fileupload({
add: function(e, data) {
data.headers = {
'Authorization': 'Basic ' + $.cookie('auth')
};
data.submit();
},
headers: {
Authorization: 'Basic ' + $.cookie('auth')
},
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", 'Basic ' + $.cookie('auth'));
},
xhrFields: {
"Authorization": 'Basic ' + $.cookie('auth')
},
requestHeaders: {
"Authorization": 'Basic ' + $.cookie('auth')
},
singleFileUploads: false,
dataType: 'jsonp',
url: window.core.get_serverUrl() + 'upload/uploadcasefile',
done: function(e, data) {
$.each(data.result.files, function(index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
}
});
});
任何想法如何强制这件事发送标题?最终,我只是试图实现拖放文件上传,甚至不需要此控件的大部分功能,但它似乎有一些不错的选择。如果我可以让它发送标题,我想我会被设置。