删除cURL发送的默认请求标头,并用自定义标头替换

2eafrhcq  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(180)

cURL将某些默认请求标头添加到所做的请求中,如主机、接受语言等。
根据How can I remove default headers that cURL sends?,为了删除这些默认标头,我们需要执行以下操作:

-H 'Host:'

我想发送以下标头[按给定顺序]

curl -H 'accept:*/*' -H 'host:www.example.com'

但是由于curl添加了默认的头文件,我看到了

Host: www.example.com
accept: */*
  • 我们如何确保默认标头不会添加到此处?*

另外,如果我们需要删除默认的头文件,但用一个更自定义的头文件替换它(例如“Host”to“host”),我们应该怎么做?我正在考虑这些行

-H 'Host:' -H 'host:www.example.com'
  • 这是处理此要求的正确方法吗?如果是,这是理想的方法吗?是否有其他方法可以删除cURL添加的默认头?*
qv7cva1a

qv7cva1a1#

我不认为您可以覆盖主机:标题。
我尝试了许多不同的HOST大写形式,但没有什么不同。
我查看了curl发送的传出请求侦听器和服务器接收的请求侦听器。
这取决于请求的类型,默认的头文件是什么,我使用PHP curl,所以默认值存储在我的php.ini中。
例如,如果我做这个 curl :

$ch = curl_init('http://eatled.com/receiveheader.php');
$response = curl_exec($ch);

请求标头为

Accept: */*
Host: eatled.com

您可以使用此URL http://eatled.com/receiveheader.php,它将返回有关您的请求的一些信息,包括请求头。
如果我将请求更改为POST,

$ch = curl_init('http://eatled.com/receiveheader.php');
curl_setopt($ch, CURLOPT_POST, true);
$response = curl_exec($ch);

我得到了不同的请求标头。

Content-Type: application/x-www-form-urlencoded
Accept: */*
Expect: 100-continue
Host: eatled.com
Transfer-Encoding: chunked

如果我从Windows命令行执行此GET请求

curl http://eatled.com/receiveheader.php

我得到这些标题:

Accept: */*
Host: eatled.com
User-Agent: curl/7.83.1

如果我在Windows中执行此POST

curl http://eatled.com/receiveheader.php -X POST

我得到了同样的回答。

Accept: */*
Host: eatled.com
User-Agent: curl/7.83.1

相关问题