mirror of
https://github.com/php/doc-zh.git
synced 2026-04-24 00:28:08 +02:00
cafa2dd276
* Add Chinese translation for language/oop5/property-hooks.xml * Translate untranslated English content in language/ files - language/context/http.xml: translate notes about transport options and redirect status - language/types/string.xml: translate resource-to-string conversion note - language/types/object.xml: translate "Casting to an Object" title - language/types/array.xml: translate "Converting to an Array" title - language/oop5/inheritance.xml: translate 3 example titles about return type overriding - language/predefined/arrayaccess/offsetset.xml: translate note about indirect changes * Add missing predefined class translations in language/predefined/ New files translated from EN: - attributes/attribute.xml: Attribute class reference - attributes/deprecated.xml + construct.xml: Deprecated attribute - attributes/override/construct.xml: Override::__construct - closure/getcurrent.xml: Closure::getCurrent (PHP 8.5) - internaliterator.xml: InternalIterator class - requestparsebodyexception.xml: RequestParseBodyException - sensitiveparameter/construct.xml: SensitiveParameter::__construct - sensitiveparametervalue.xml + construct/debuginfo/getvalue: SensitiveParameterValue class * Update language/context/http.xml Co-authored-by: 蝦米 <me@jhdxr.com> * Update http.xml * Update property-hooks.xml * Update offsetset.xml --------- Co-authored-by: 蝦米 <me@jhdxr.com> Co-authored-by: mowangjuanzi <mowangjuanzi@petalmail.com>
326 lines
9.2 KiB
XML
326 lines
9.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: 3abd17e61d5022d503604cc06894254e3281acf5 Maintainer: z warmwinter Status: ready -->
|
||
<!-- CREDITS: Jader, mowangjuanzi, Luffy -->
|
||
<refentry xml:id="context.http" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" annotations="verify_info:false" role="stream_context_option">
|
||
<refnamediv>
|
||
<refname>HTTP context 选项</refname>
|
||
<refpurpose>HTTP context 的选项列表</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<para>
|
||
提供给 <literal>http://</literal> 和 <literal>https://</literal> 传输协议的 context 选项。
|
||
transports.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="options"><!-- {{{ -->
|
||
&reftitle.options;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry xml:id="context.http.method">
|
||
<term>
|
||
<parameter>method</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
远程服务器支持的 <constant>GET</constant>,<constant>POST</constant> 或其它 HTTP 方法。
|
||
</para>
|
||
<para>
|
||
默认值是 <constant>GET</constant>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.header">
|
||
<term>
|
||
<parameter>header</parameter>
|
||
<type>array</type> 或 <type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
请求期间发送的附加 header 。此选项中的值将覆盖其他值
|
||
(如 <literal>User-agent:</literal>, <literal>Host:</literal> 和
|
||
<literal>Authentication:</literal>),
|
||
即使在执行 <literal>Location:</literal> 重定向时也是如此。
|
||
所以,如果启用了 <parameter>follow_location</parameter>
|
||
就不建议设置 <literal>Host:</literal> header。
|
||
</para>
|
||
<para>
|
||
字符串值是以 <literal>\r\n</literal> 分隔的 <literal>Key: value</literal>,例如 <literal>"Content-Type:
|
||
application/json\r\nConnection: close"</literal>。数组值应为 <literal>Key: value</literal>
|
||
的列表,例如 <literal>["Content-Type: application/json", "Connection: close"]</literal>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.user-agent">
|
||
<term>
|
||
<parameter>user_agent</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
要发送的 header <literal>User-Agent:</literal> 的值。如果在上面的
|
||
<literal>header</literal> context 选项中没有指定 user-agent,此值将被使用。
|
||
</para>
|
||
<para>
|
||
默认使用 &php.ini; 中设置的 <link linkend="ini.user-agent">user_agent</link>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.content">
|
||
<term>
|
||
<parameter>content</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
在 header 后面要发送的额外数据。通常使用POST或PUT请求。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.proxy">
|
||
<term>
|
||
<parameter>proxy</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
URI 指定的代理服务器的地址(例如:
|
||
<literal>tcp://proxy.example.com:5100</literal>)。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.request-fulluri">
|
||
<term>
|
||
<parameter>request_fulluri</parameter>
|
||
<type>bool</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
当设置为 &true; 时,在构建请求时将使用整个 URI(例如:
|
||
<literal>GET http://www.example.com/path/to/file.html HTTP/1.0</literal>)。
|
||
虽然这是一个非标准的请求格式,但某些代理服务器需要它。
|
||
</para>
|
||
<para>
|
||
默认值是 &false;.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.follow-location">
|
||
<term>
|
||
<parameter>follow_location</parameter>
|
||
<type>int</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
跟随 <literal>Location</literal> header 的重定向。设置为 <literal>0</literal> 以禁用。
|
||
</para>
|
||
<para>
|
||
默认值是 <literal>1</literal>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.max-redirects">
|
||
<term>
|
||
<parameter>max_redirects</parameter>
|
||
<type>int</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
跟随重定向的最大次数。值为 <literal>1</literal> 或更少则意味不跟随重定向。
|
||
</para>
|
||
<para>
|
||
默认值是 <literal>20</literal>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.protocol-version">
|
||
<term>
|
||
<parameter>protocol_version</parameter>
|
||
<type>float</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
HTTP 协议版本。
|
||
</para>
|
||
<para>
|
||
PHP 8.0.0 起默认值是 <literal>1.1</literal>。在此之前默认值是 <literal>1.0</literal>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.timeout">
|
||
<term>
|
||
<parameter>timeout</parameter>
|
||
<type>float</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
读取超时时间,单位为秒(s),用 <type>float</type> 指定(例如:<literal>10.5</literal>)。
|
||
</para>
|
||
<para>
|
||
默认使用 &php.ini; 中设置的 <link linkend="ini.default-socket-timeout">default_socket_timeout</link>。
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="context.http.ignore-errors">
|
||
<term>
|
||
<parameter>ignore_errors</parameter>
|
||
<type>bool</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
即使是故障状态码依然获取内容。
|
||
</para>
|
||
<para>
|
||
默认值为 &false;.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
<refsect1 role="examples"><!-- {{{ -->
|
||
&reftitle.examples;
|
||
<para>
|
||
<example xml:id="context.http.example-post"><!-- {{{ -->
|
||
<title>获取一个页面并发送 POST 数据</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$postdata = http_build_query(
|
||
[
|
||
'var1' => 'some content',
|
||
'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);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example><!-- }}} -->
|
||
</para>
|
||
<para>
|
||
<example xml:id="context.http.example-fetch-ignore-redirect"><!-- {{{ -->
|
||
<title>忽略重定向并获取 header 和内容</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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);
|
||
|
||
// header 信息和 stream 的元数据一样
|
||
var_dump(stream_get_meta_data($stream));
|
||
|
||
// $url 的实际数据
|
||
var_dump(stream_get_contents($stream));
|
||
fclose($stream);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example><!-- }}} -->
|
||
</para>
|
||
</refsect1><!-- }}} -->
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
<note>
|
||
<title>底层 socket stream 上下文选项</title>
|
||
<simpara>
|
||
<link linkend="transports.inet">底层传输</link>可能支持额外的上下文选项。对于
|
||
<literal>http://</literal> 流,请参阅
|
||
<literal>tcp://</literal> 传输的上下文选项。对于
|
||
<literal>https://</literal> 流,请参阅
|
||
<literal>ssl://</literal> 传输的上下文选项。
|
||
</simpara>
|
||
</note>
|
||
<note>
|
||
<title>HTTP 状态行</title>
|
||
<simpara>
|
||
当此流包装器跟随重定向时,<function>stream_get_meta_data</function> 返回的
|
||
<literal>wrapper_data</literal> 中索引 <literal>0</literal>
|
||
处不一定包含实际适用于内容数据的 HTTP 状态行。
|
||
</simpara>
|
||
<screen>
|
||
<![CDATA[
|
||
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',
|
||
...
|
||
]]>
|
||
</screen>
|
||
<simpara>
|
||
第一个请求返回 <literal>301</literal> (永久重定向),
|
||
因此 stream 包装器自动跟随重定向到获得 <literal>200</literal>
|
||
响应(index = <literal>4</literal>)。
|
||
</simpara>
|
||
</note>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><xref linkend="wrappers.http" /></member>
|
||
<member><xref linkend="context.socket" /></member>
|
||
<member><xref linkend="context.ssl" /></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
</refentry>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|
||
|