Sim*_*ity 7 browser authentication url curl basic-authentication
我想通过在URL中提供用户名和密码,让用户有机会进行按请求身份验证.由于请求是安全的,我对此没有任何顾虑.
我尝试http://user:password@localhost/使用通常的浏览器调用该请求(Firefox,Chrome,Safari和Opera是我测试的那些),我得到了401回复.当我尝试相同的URI,但这次提供的凭证像HTTP-header一样Authentication: Basic dXNlcjpwYXNzd29yZA==,它起作用了.
在搜索时,我找到了另一个问题的答案:https://serverfault.com/questions/371907/can-you-pass-user-pass-for-http-basic-authentication-in-url-parameters#answer -371918
这个答案声称,浏览器应该自动从URL中提供的凭据生成Authentication头.
使用curl在命令行上尝试时,它可以正常工作.那么,为什么它在浏览器中不起作用?
这与安全性有关吗?
Firefox是唯一一个声称:
您即将使用用户名"user"登录"localhost"站点,但该网站不需要身份验证.这可能是一种欺骗你的尝试.
"localhost"是您要访问的网站吗?
但是当通过单击是确认此请求时,它会在没有凭据的情况下发送请求.至少,我无法在萤火虫的网络标签中看到它们......响应也是401.
是的,它是关于安全性的,它是关于选择的.
首先,当您使用curl执行上面提到的操作时,curl默认为并假设您需要基本身份验证(除非您指定其他内容,是的,名称是真正的"基本").
如果您要求curl使用单个方法执行HTTP身份验证并提供凭据,那么它会决定它可以立即发送身份验证头.如果您改为要求它执行几个auth类型(底层库可以执行libcurl),那么它将不会在第一个请求中发送任何auth标头,但它会发送一个非auth请求以查看服务器的哪些方法想要 - 就像浏览器一样.
在浏览器的情况下,他们总是采用多身份验证方案,因此他们不会假设您需要基本身份验证,并且通过这样做,他们不会盲目地通过网络盲目地发送您的用户+密码.然后,如果服务器实际上只需要Basic(或者浏览器不支持服务器支持的更多auth类型),他们就会这样做.
我希望这有点澄清一些事情.
| 归档时间: |
|
| 查看次数: |
9532 次 |
| 最近记录: |