中间代理是否允许在代理身份验证期间添加cookie?

前端之家收集整理的这篇文章主要介绍了中间代理是否允许在代理身份验证期间添加cookie?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近遇到了某个安全设备(BlueCoat),它要求所有连接到Internet的连接必须通过它代理(你好,中间人),因此使用特殊的SSL证书拦截所有流量.

这阻止了Git的正常操作,即使设置了适当的http.proxy和http.sslCAInfo属性以确保SSL连接本身有效.

使用环境变量GIT_CURL_VERBOSE = 1,我们发现当使用git clone时,会发生HTTP 407(需要代理身份验证). Git正确地完成了此身份验证,最后,设备返回带有Cookie标头Set-Cookie的HTTP 200.

然后Git将连接到目标服务器,但没有cookie,导致HTTP 401.

解决方案是设置git配置选项http.saveCookies = true

题:
RFC标准实际上允许中间代理添加cookie吗?

Anthony Rich asked the same question to the http-state mailing list但没有任何回应.他确实注意到了

RFC 2965 HTTP State Management Mechanism,3.5 Caching Proxy Role it says:
Proxies MUST NOT introduce Set-Cookie2 (Cookie) headers of their own
in proxy responses (requests).

然而,superseding RFC 6265根本没有提到这一点.

解决方法

HTTP cookie是一个热点.没有真正的标准; RFC,它的价值,只是试图记录实际的用户代理正在做什么.

在任何情况下,您可能想要读取的RFC是RFC 7235,它指定代理应该发送带有401错误的Proxy-Authenticate头来请求身份验证信息,并且接收此代理的用户代理应该使用代理重试请求 – 包含代理的身份验证信息的授权头.

可以使用一些挑战/响应方法来提供这些信息;最常用的是“基本”(RFC 7617),因为几乎所有说HTTP的东西都实现了它.

IANA维护registry of known HTTP authentication schemes.作为一般规则,他们使用之前命名的HTTP标头,或者注意到它们不合规.没有使用cookie进行身份验证.

是否允许代理添加或更改cookie,我不能说.在这一点上,RFC似乎并不十分清楚.这肯定是出乎意料的行为,特别是对于身份验证. BlueCoat在质量方面有着悠久的历史……

猜你在找的HTML相关文章