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

gga*_*gat 8 javascript browser authentication http http-headers

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

request.setRequestHeader('Authorization', authInfo);
Run Code Online (Sandbox Code Playgroud)

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

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

Nat*_*all 2

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

location.href = 'http://user:password@example.com/path/to/download';
Run Code Online (Sandbox Code Playgroud)

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

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