将http标头设置为浏览器生成的请求?

时间:2012-06-25 07:00:05

标签: javascript http authentication browser http-headers

我有服务器使用HTTP基本身份验证,我有客户端脚本,它知道上述HTTP服务器的用户名和密码。我使用XHR请求和setRequestHeader来设置授权标头,这一点可以避免浏览器提示默认的HTTP登录对话框。

request.setRequestHeader('Authorization', authInfo);

对于AJAX请求这是正常的,但是如果我想从上述服务器下载文件,我不得不去而不使用AJAX 并使用类似{{1}的内容来自JavaScript的浏览器自己创建请求。由于此请求不包含授权标头(brwoser将仅在提示登录对话框后自动为每个请求添加授权标头并保存实际服务器的登录信息的base64)浏览器将提示HTTP登录对话框,我想避免。

那么有没有办法将标头设置为浏览器创建的非ajax 请求?

1 个答案:

答案 0 :(得分:2)

您是否尝试在网址中设置用户名和密码?

location.href = 'http://user:password@example.com/path/to/download';

我认为这应该适用于大多数浏览器,不幸的是,Internet Explorer 7+

或者,如果您有权访问服务器,则可以在服务器端放置一个使用cookie进行身份验证的脚本。可以使用JavaScript设置Cookie。