我有一个处理摘要身份验证的自定义网络服务器。我有一个网络客户端,它连接到网络服务器并在 javascript 中执行摘要身份验证,即没有弹出窗口。
客户端
为避免此类弹出窗口(在 401 错误中总是如此),客户端请求带有自定义警告标头的数据
new XMLHttpRequest();
request.open('GET', urlToGet + "?" + Math.random(), false);
request.setRequestHeader("Warning","CustomRequest");
服务器端
每当网络服务器获得一个 CustomRequest 警告标头时,它都会回复一个自定义 HTTP 代码 (406) 和一个 auth 标头。
然后客户端解析服务器标头,创建散列的身份验证字符串,我可以识别。到目前为止,一切都很好(另请参阅我以前的问题here和here)。
现在我有了好的标题,我希望我的浏览器在我提出的每个请求中都包含它,它是 CSS
background-image: url(IMAGE_URL);
或jQuery
$('#theDiv').prepend('<img id="theImg" src=IMAGE_URL />')
或 jquery / AJAX
$.ajax({
url: SOME_URL,
// ...
});
后者可能是最简单的,因为我可以使用
beforeSend : function(req) {req.setRequestHeader('Authorization',authHeader);}
并且我知道 authHeader。
是否可以使用 jquery/javascript 告诉浏览器“从现在开始的所有请求都应该有这个授权头?
另一种方法是在网络服务器端实现会话,这是我很乐意避免的。