首先我创建了一个test.php:
<?php var_dump( $_SERVER['CONTENT_TYPE'] );
我发送一个非常简单的HTTP-POST-Request,如下所示:
POST http://example.com/test.php
Content-Type: text/xml; charset=ISO-8859-1
some text
-- response --
200 OK
Server: Apache/2.4.12 (Win64) mod_fcgid/2.3.9
X-Powered-By: PHP/5.4.39
Content-Type: text/html; charset=ISO-8859-1
string(23) "text/xml; charset=UTF-8"
正如你所看到的,发送字符集我设置为&#34; ISO-8859-1&#34;并且服务器存储在$ _SERVER [&#39;内容类型&#39;]&#34; UTF-8&#34;
如果Request-Content为空,则响应如下:
POST http://example.com/test.php
Content-Type: text/xml; charset=ISO-8859-1
-- response --
200 OK
Server: Apache/2.4.12 (Win64) mod_fcgid/2.3.9
X-Powered-By: PHP/5.4.39
Content-Type: text/html; charset=ISO-8859-1
string(28) "text/xml; charset=ISO-8859-1"
我在2个不同的Web服务器(1x Zend CE服务器,1x默认Apache实例)上测试了这个,这在两个网络服务器上都会发生。
为什么网络服务器会按照我的要求在$ _SERVER [&#39;内容类型&#39;]中输出不同的Content-Type-Charset?
我问这个因为PHP-Nusoap检查XML-Encoding是否等于header-charset,因此它是不同的。