最近用jquery-file-upload插件做上传文件的功能。
其他的功能都齐了,但是遇到一个问题,后台对于每一次请求都要验证一下是不是登录用户发过来的,根据就是http 请求头中的两项 username 和 password,对于应用前端的其他功能,每一次请求中都会在headers中设置这两项,angular js提供了这个功能,代码如下:
setAuthHeaders: function ($http, email, password) { $http.defaults.headers.common['username'] = email; $http.defaults.headers.common['password'] = password; },
周四,在翻看jquery.fileupload.js的源文件时,无意中看到一个方法,叫做 _initXHRData ,从名字看似乎是在初始化一些准备提交的数据,然后这个方法体里面有几行代码引起了我的注意:
if (options.contentRange) { options.headers['Content-Range'] = options.contentRange; }
//For Test--------------- options.headers['username'] = fs.common.getSignedUser().email; options.headers['password'] = fs.common.getSignedUser().password; //----------------------- if (options.contentRange) { options.headers['Content-Range'] = options.contentRange; }
然后再次运行发送功能,果然Headers中就有了username和password这两项,哈哈!
总结一下,很多时候遇到一些古怪的需求和问题,绝大多数都是可以克服的,只是需要相当的耐心去一点一点发掘相关的信息。