Java 区分URL用户名和基本身份验证用户名?
假设浏览器发送了url:Java 区分URL用户名和基本身份验证用户名?,java,http,servlets,jakarta-ee,basic-authentication,Java,Http,Servlets,Jakarta Ee,Basic Authentication,假设浏览器发送了url: http://user1:password1@myhost.com/index.html 此URL是否可以在httpAuthorization标题中使用不同的用户名/密码对发送 例如: $http({ method: 'GET', url: 'http://user1:password1@myhost.com/index.html', headers: {
http://user1:password1@myhost.com/index.html
此URL是否可以在httpAuthorization
标题中使用不同的用户名/密码对发送
例如:
$http({
method: 'GET',
url: 'http://user1:password1@myhost.com/index.html',
headers: {
'Authorization': 'Basic ' + btoa('username2:password2')
}
})
如果是,那么如何区分这些地方
哪一个是我的
如何获得另一个
更新
根据我的Fiddler观察,web客户端不会在URL中保留用户名和密码,即使它是显式传递的。相反,它将用户名和密码放入Authorization
标题中。我不知道,如果不同的值通过javascript传递的方式不同,会发生什么情况。无论如何,只发送一个用户名:password Pay
但后来对错误代码的行为有所不同。若在URL中传递了密码,则浏览器不会显示401错误的授权对话框。这可能与浏览器有关。来自页眉:
String header = request.getHeader("Authorization")
然后解码它
从URL:
URL url = new URL(request.getRequestURL()); //http://username:password@hostname.com
String userInfo = url.getUserInfo() // username:password
用户名/密码应在标题中传递,而不是URL的一部分。浏览器似乎可以跳过URL中的用户名和密码。URL中的用户名和密码不会发送到服务器。浏览器的一个便利功能就是输入它们,浏览器会将它们放入/复制到
认证
标题中