8

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

request.setRequestHeader('Authorization', authInfo);

这对于 AJAX 请求来说是正常的,但如果我想从提到的服务器下载文件并且我被迫不使用 AJAX并使用浏览器自己创建请求的 JavaScript 之类的东西window.location.href。由于此请求不包含授权标头(浏览器仅在提示登录对话框并为实际服务器保存登录信息的 base64 后才会自动为每个请求添加授权标头)浏览器将提示 HTTP 登录对话框,这是我想避免的。

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

4

1 回答 1

2

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

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

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

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

于 2012-06-25T07:06:58.563 回答