如何将授权标头添加到DOM表单元素?

时间:2011-02-26 02:32:39

标签: javascript authentication dom basic-authentication

我正在尝试将文件上传到服务器,并将我的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元素传递它?

3 个答案:

答案 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标头。