如何使用 Curl 发送空白接受标头 - PHP

我已经看到了几个相关的问题,但不幸的是,没有一个推荐的解决方案可以解决我的问题。


我正在尝试使用 PHP curl 发送一个空白的 Accept 标头:


PHP 版本:7.3 Disto:Debian


    /**

     * @param string $method

     * @param string $url

     * @param string $body

     * @param array $headers

     *

     * @return Response

     */

    public function execute(string $method, string $url, string $body = '', array $headers = []): Response

    {

        $curlHeaders = [];

        $isAcceptHeaderPresent = false;

        $isExpectHeaderPresent = false;

        $curl = \curl_init();

        $response = new Response();

        foreach ($headers as $name => $value) {

            $curlHeaders[] = $value === '' ? "{$name};" : "{$name}: $value";


            $name = \strtolower($name);

            if ($name === 'accept') {

                $isAcceptHeaderPresent = true;

            }


            if ($name === 'expect') {

                $isAcceptHeaderPresent = true;

            }

        }


        if ($isAcceptHeaderPresent === false) {

            $curlHeaders[] = 'Accept: ';

        }


        if ($isExpectHeaderPresent === false) {

            $curlHeaders[] = 'Expect: ';

        }


        $options = [

            CURLOPT_URL => \str_replace(' ', '%20', $url),

            CURLOPT_RETURNTRANSFER => true,

            CURLOPT_HEADER => false,

            CURLOPT_FOLLOWLOCATION => true,

            CURLOPT_AUTOREFERER => true,

            CURLOPT_CONNECTTIMEOUT => 120,

            CURLOPT_TIMEOUT => 120,

            CURLOPT_MAXREDIRS => 10,

            CURLOPT_SSL_VERIFYPEER => false,

            CURLOPT_POSTFIELDS => $body,

            CURLOPT_HEADERFUNCTION => [$response, 'headerWrite'],

            CURLOPT_WRITEFUNCTION => [$response, 'bodyWrite'],

            CURLOPT_FILE => $response->getBodyAsResouce(),

            CURLOPT_HTTPHEADER => $curlHeaders,

        ];


        

如果Accept:提供,则不会以任何方式发送 Accept 标头。


而Accept;这样做,空白值也将与*/*值一起发送:"accept":"*/*,


有没有办法按Accept:原样发送标题?


我想知道这个机制在最近几个 PHP 和 curl 扩展版本中是否已经改变,因为没有任何建议按预期工作。


POPMUISE
浏览 125回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP