我已经实现了一个使用基本身份验证(使用 spring 安全性)的 Web 服务器。
我在访问 URL 时禁用了默认身份验证入口点(而不是使用 www-authentication header 响应 401,它只返回 401),目的是防止浏览器显示身份验证弹出窗口。
我能够使用 javascript 代码和 curl 等命令行工具连接到服务器,但是当我使用浏览器(chrome 和 firefox)对其进行测试时,它们只是不发送 header 。curl -v -u user:password localhost:8080/user
GET /user HTTP/1.1
Host: localhost:8080
Authorization: Basic dXNlcjpwYXNzd29yZA==
User-Agent: curl/7.58.0
Accept: /
Chrome:版本 71.0.3578.98(官方版本)(64 位)
http://user:password@localhost:8080/user
GET /user HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
DNT: 1
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br Accept-Language: en-AU,en;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
为什么浏览器不发送身份验证 header 。
最佳答案
通常浏览器在登录后获取 Auth-token。后端将有效 token 作为授权部分添加到 header 。
要使用浏览器操作 HTML 请求,您需要一个插件,如 https://addons.mozilla.org/de/firefox/addon/restclient/或像 postman 这样的额外工具。
关于browser - 如何使用浏览器发送授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54606939/