HTTP GET + 自定义 header
HTTP GET + custom header
无法生成带有自定义 header 的 GET
请求。
我在服务器上有一个非常简单的PHP-file:
<?php
if (empty($_GET['test']))
{
echo('0');
}
else
{
echo('1');
}
?>
我试过了TIdHTTP
:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHttp1.Request.CustomHeaders.AddValue('test', 'text');
Memo1.Text:= IdHttp1.Get('https://example.com');
end;
和THTTPClient
:
procedure TForm1.Button1Click(Sender: TObject);
begin
NetHTTPClient1.CustHeaders.Add('test', 'text');
//NetHTTPClient1.CustomHeaders['test'] := 'text';
Memo1.Text:= NetHTTPClient1.Get('https://example.com', nil).ContentAsString;
end;
但文档仅呈现为 0
和 /var/log/apache2/error.log 包含:
PHP Notice: Undefined index: test in /var/www/html/index.php on line 3
好像CustomHeaders['test']
是空的。为什么?
您混淆了 headers 与 参数:
$_GET
contains all parameters 当使用 HTTP 方法 GET
时。这始终是查询地址本身:在 http://myserver.net/mysite.php?test=hell&other=world
中,您将拥有参数 test
和 other
及其各自的值。
$_SERVER
contains all headers。 Headers 是随请求和响应一起发送的内容。 Cookie 总是 headers:
Connection: keep-alive
Accept-Ranges: bytes
Set-Cookie: p=a; domain=.whosebug.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
如果你想发送和访问参数,那么只需将它们添加到你请求的地址:
IdHttp1.Get('https://example.com?test=text');
如果你想访问 HTTP headers 那么就这样做而不是期待参数:
if (empty($_SERVER['test']))
无法生成带有自定义 header 的 GET
请求。
我在服务器上有一个非常简单的PHP-file:
<?php
if (empty($_GET['test']))
{
echo('0');
}
else
{
echo('1');
}
?>
我试过了TIdHTTP
:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHttp1.Request.CustomHeaders.AddValue('test', 'text');
Memo1.Text:= IdHttp1.Get('https://example.com');
end;
和THTTPClient
:
procedure TForm1.Button1Click(Sender: TObject);
begin
NetHTTPClient1.CustHeaders.Add('test', 'text');
//NetHTTPClient1.CustomHeaders['test'] := 'text';
Memo1.Text:= NetHTTPClient1.Get('https://example.com', nil).ContentAsString;
end;
但文档仅呈现为 0
和 /var/log/apache2/error.log 包含:
PHP Notice: Undefined index: test in /var/www/html/index.php on line 3
好像CustomHeaders['test']
是空的。为什么?
您混淆了 headers 与 参数:
$_GET
contains all parameters 当使用 HTTP 方法GET
时。这始终是查询地址本身:在http://myserver.net/mysite.php?test=hell&other=world
中,您将拥有参数test
和other
及其各自的值。$_SERVER
contains all headers。 Headers 是随请求和响应一起发送的内容。 Cookie 总是 headers:Connection: keep-alive Accept-Ranges: bytes Set-Cookie: p=a; domain=.whosebug.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
如果你想发送和访问参数,那么只需将它们添加到你请求的地址:
IdHttp1.Get('https://example.com?test=text');
如果你想访问 HTTP headers 那么就这样做而不是期待参数:
if (empty($_SERVER['test']))