ΠΠΏΡΠΈΠΈ HTTP-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
ΠΠΏΡΠΈΠΈ HTTP-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° β Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΠΏΡΠΈΠΉ HTTP-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΡ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² http://
ΠΈ https://.
ΠΠΏΡΠΈΠΈ
-
method
string
-
ΠΠ΅ΡΠΎΠ΄Ρ GET, POST
ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ HTTP-ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β GET.
-
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ
Π² ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅
User-Agent:, Host:
ΠΈ Authentication:, Π΄Π°ΠΆΠ΅
ΠΏΡΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Location:.
ΠΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Host:,
Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΡ follow_location.
Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΡ ΠΠ»ΡΡ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
\r\n, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
"Content-Type: application/json\r\nConnection: close".
Π ΠΌΠ°ΡΡΠΈΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Ρ ΠΠ»ΡΡ: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
["Content-Type: application/json", "Connection: close"].
-
user_agent
string
-
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ User-Agent:. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅
ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ User-Agent Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ
Π² ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° header Π²ΡΡΠ΅.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
user_agent
ΠΈΠ· ΡΠ°ΠΉΠ»Π° php.ini.
-
content
string
-
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ
Ρ POST- ΠΈ PUT-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
-
proxy
string
-
URI-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
tcp://proxy.example.com:5100.
-
request_fulluri
bool
-
Π‘ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ true ΠΏΡΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°
Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡ URI,
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: GET
http://www.example.com/path/to/file.html
HTTP/1.0.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ ΡΡΠ΅Π±ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ,
Ρ
ΠΎΡΡ ΡΡΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false.
-
follow_location
int
-
ΠΠΏΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°
Location.
Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
0.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 1.
-
max_redirects
int
-
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ,
ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅
1 ΠΈΠ»ΠΈ
ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 20.
-
protocol_version
float
-
ΠΠ΅ΡΡΠΈΡ HTTP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°.
Π‘ PHP 8.0.0 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 1.1;
Π΄ΠΎ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΡΠ»ΠΎΡΡ 1.0.
-
timeout
float
-
ΠΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (float),
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: 10.5.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
default_socket_timeout
ΠΈΠ· ΡΠ°ΠΉΠ»Π° php.ini.
-
ignore_errors
bool
-
ΠΠΏΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΡΡ
ΡΡΠ°ΡΡΡΠ°Ρ
Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β false.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ POST
<?php
$postdata = http_build_query(
[
'var1' => 'Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅',
'var2' => 'doh',
]
);
$opts = [
'http' => [
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata,
]
];
$context = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);
?>
ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π½ΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
<?php
$url = "http://www.example.org/header.php";
$opts = [
'http' => [
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1',
]
];
$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);
// ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ
// ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΠΎΡΠΎΠΊΠ΅
var_dump(stream_get_meta_data($stream));
// Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡΠΎΠΊΠ° Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°
ΠΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΠ»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² http:// ΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΎΠΏΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° tcp://.
ΠΠ»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² https:// ΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΎΠΏΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ssl://.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
Π‘ΡΡΠΎΠΊΠ° HTTP-ΡΡΠ°ΡΡΡΠ°
ΠΠΎΠ³Π΄Π° ΡΡΠ° ΠΎΠ±ΡΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ,
ΡΠ»Π΅ΠΌΠ΅Π½Ρ wrapper_data, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ
ΡΡΠ½ΠΊΡΠΈΡ stream_get_meta_data(), Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ
ΡΡΡΠΎΠΊΡ HTTP-ΡΡΠ°ΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ 0.
array (
'wrapper_data' =>
array (
0 => 'HTTP/1.0 301 Moved Permanently',
1 => 'Cache-Control: no-cache',
2 => 'Connection: close',
3 => 'Location: http://example.com/foo.jpg',
4 => 'HTTP/1.1 200 OK',
...
ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ Π²Π΅ΡΠ½ΡΠ» ΠΊΠΎΠ΄ 301 (ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅),
ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Π»Π° ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ
ΠΎΡΠ²Π΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 200 (ΠΈΠ½Π΄Π΅ΠΊΡ = 4).
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅