让cUrl在PHP中抢先发送DIGEST身份验证的授权头


Get cUrl to preemptively send Authorization header for DIGEST authentication in PHP

我们有一个PHP页面(实际上是一个WordPress插件),它通过DIGEST身份验证调用REST API。curl句柄是在每个请求的基础上创建的,给定授权凭据并成功进行身份验证。

问题:

在底层,Curl正在发送两个请求。第一个请求失败,返回401和一个挑战,第二个请求包含Authorization报头,返回成功(200)

在随后的API调用中,cUrl继续发送两个请求。这似乎效率低下,导致2倍的网络延迟增加到操作的持续时间。

我们如何使cURL"先发制人地验证"(示例)未来的请求?

Curl Multi有这个功能吗?

必须重复使用相同的curl句柄:参见类似的问题了解更多细节。

就多接口而言,你还需要显式地重用每个句柄来利用摘要访问认证请求计数器,即考虑到C API:

  1. curl_multi_remove_handle从多句柄中删除你的句柄
  2. curl_easy_reset复位
  3. 设置下次呼叫的选项
  4. curl_multi_add_handle重新添加到多句柄中