关于使用 HTTPS URL,请注意,HTTP 传输可能存在分配器/释放器不匹配的情况,这一点已在 Git 2.25(2020 年第一季度)中得到纠正。
所以如果你使用的是 Git 2.24,http.extraheader
无论如何都是行不通的。
See commit 4d17fd2 https://github.com/git/git/commit/4d17fd253fbba05c643593bcb86515683badb03f (06 Nov 2019) by Johannes Schindelin (dscho) https://github.com/dscho.
(Merged by Junio C Hamano -- gitster -- https://github.com/gitster in commit bad5ed3 https://github.com/git/git/commit/bad5ed39cdd84953f935f4442dd92fe3f7afafc2, 01 Dec 2019)
remote-curl https://github.com/git/git/commit/4d17fd253fbba05c643593bcb86515683badb03f:使用自定义分配器取消破坏 http.extraHeader
Signed-off-by: Johannes Schindelin
In 93b980e58f5 https://github.com/git/git/commit/93b980e58f5624ee4e3b2dc0d0babaa97ef66d19 ("http
:将 xmalloc 与 cURL 结合使用”,2019-08-15,Git v2.24.0-rc0 --merge https://github.com/git/git/commit/a2e524ecf396722020e85b39d7b5e83d7c95ec24列于batch #3 https://github.com/git/git/commit/4c86140027f4a0d2caaa3ab4bd8bfc5ce3c11c8a),我们开始要求cURL使用xmalloc()
,如果使用 nedmalloc 编译,则隐含地意味着与系统分配器不同的分配器。
这意味着 cURL 的所有分配和释放现在_need
_ 使用该分配器。
但是,那http_options()
使用的功能slist_append()
添加任何配置的额外 HTTP 标头_before
_ 要求使用 cURLxmalloc()
, and http_cleanup()
会释放他们_afterwards_,
即,在存在自定义分配器的情况下,cURL 将尝试使用错误的分配器来释放内存。
解决这个问题的天真尝试会将调用转移到curl_global_init()
_before
_ 配置被解析(即在调用之前slist_append()
).
然而,这不起作用,因为我们_also
_ 解析配置设置http.sslbackend
如果找到,请致电curl_global_sslset()
which must之前被调用curl_global_init()
,详情参见:https://curl.haxx.se/libcurl/c/curl_global_sslset.html https://curl.haxx.se/libcurl/c/curl_global_sslset.html
因此,让我们让配置解析完全独立于 cURL 的数据结构。顺便说一句,这比引入的内容多删除了两行,这很好。
对于自签名证书,全局禁用 SSL 验证可能会被视为安全风险,并且仅应在测试时实施。
引用自签名证书GIT_SSL_CAINFO https://stackoverflow.com/a/26785963/6309更安全。