Wikipedia says HTTP基本身份验证依赖于Authorization
标头来提供从客户端到服务器的凭据。
但也可以在URL中嵌入凭据:
http(s)://<user>:<password>@<host>/<path>
它是由浏览器解释并转换为Authorization
标题还是直接发送到服务器?
答案 0 :(得分:5)
但也可以在URL中嵌入凭证
只有当浏览器支持HTTP时才会出错,通常是故意向后兼容浏览器,人们误以为这是个好主意。
HTTP方案永远不会允许它,尽管URI语法通常允许用户信息。
它是由浏览器解释并转换为Authorization标头的东西。
是。如果服务器发送了401,则浏览器将使用该用户名和密码进行回复。至少有一个曾经先发制人地试图使用Basic,这在现有的坏主意之上显然是一个坏主意。
答案 1 :(得分:4)
如果您输入包含凭据的网址,则用户体验因浏览器和浏览器设置而异。
说你要求http://example.com/index.html
。
浏览器请求example.com
,忽略第一个请求的凭据。服务器给出401响应,声明需要基本身份验证。
然后根据您可能遇到的浏览器和配置
user
身份登录http://example.com/index.html
(Firefox)然后,Authorization
标题会向 $(".person").click(function(){
var lname = $(this).children("lname").val();
$.ajax({
url:'profile',
type: 'GET',
data: 'lname' : lname,
dataType: 'json',
success: function(result){
}
});
}
发出第二个请求。
在给定此类URL时自动登录的任何其他客户端都使用Authorization标头,基本身份验证无法正常工作。