我正在尝试将文件上传到服务器,并将我的DOM元素设置为:
_uploadForm = document.createElement("form");
_uploadForm.method = "POST";
_uploadForm.action = "#";
if(_isBrowser.IE)
_uploadForm.encoding = "multipart/form-data";
else
_uploadForm.enctype = "multipart/form-data";
我的服务器需要http基本授权标头。我如何通过这个DOM元素传递它?
答案 0 :(得分:1)
您的javascript客户端在提交表单时必须添加标头。 我不确定您使用的是哪个javacript客户端库,但像angular这样的东西允许您设置默认标头,甚至可以在发送之前添加标头的拦截器。
var req = {
method: 'POST',
url: 'http://example.com',
headers: {
'Content-Type': undefined,
'Authorization': 'your-scheme your-token-perhaps'
},
data: { test: 'test' }
}
答案 1 :(得分:0)
DOM元素与授权无关,它们只是内部浏览器对各种html标记的表示。服务器要求授权 - 如果页面位于受保护区域,则服务器将要求凭据,这与表单本身无关。
答案 2 :(得分:0)
最简单的方法是从同一文件夹提供上传表单和上传处理程序,并使用.htaccess强制对两者进行基本身份验证。然后,浏览器会在加载上传表单时自动请求凭据,并且凭据上传会自动发送凭据(我相信)。
但是,最好的办法是不要使用HTTP基本身份验证。除非您使用SSL,否则它会在每个请求上以明文发送密码,而且一般情况下使用它会很麻烦。
如果您坚持使用Basic,我相信可以使用ActionScript(编译为SWF)来完成。我也知道在AJAX调用上设置Authorization标头的方法,但是你不能上传带有AJAX调用的文件,浏览器也不记得通过AJAX调用发送的Authorization标头。