我有一个处理摘要身份验证的自定义网络服务器。 我有一个webclient连接到web服务器并在javascript中执行摘要身份验证,即没有弹出窗口。
客户端
为了避免这样的弹出窗口(401错误总是如此),客户端使用自定义警告标题请求数据
new XMLHttpRequest();
request.open('GET', urlToGet + "?" + Math.random(), false);
request.setRequestHeader("Warning","CustomRequest");
服务器端
每当Web服务器获得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告诉浏览器“从现在开始的所有请求都应该有这个授权标题?
另一种方法是在网络服务器端实施会议,这是我很乐意避免的。