我需要使用 PHP 下载 xml 文件。我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容。
curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');
从上面的代码片段可以明显看出,我需要将 VERIFYHOST 设置为 false,并且在调用读取文件时还需要设置显式 USERAGENT,因为该文件不可公开访问,并且只有特定应用程序可以调用来读取它(Web-Security技术和东西)
但是如何下载相同的文件,我已经尝试过readfile
, fopen/fpassthru
, file_get_contents
但似乎没有任何作用。
Readfile 给出错误failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
有没有办法提供类似卷曲的选项fopen
or readfile
,我认为这可能是解决这个问题最简单的方法。我在 PHP 文档中找不到太多帮助。
请帮忙。
您需要将特殊的用户代理附加到流上下文。
From http://www.php.net/manual/en/wrappers.http.php http://www.php.net/manual/en/wrappers.http.php
允许使用 HTTP GET 方法通过 HTTP 1.0 对文件/资源进行只读访问。 Host: 标头与处理基于名称的虚拟主机的请求一起发送。如果您配置了使用 php.ini 文件的 user_agent 字符串 http://www.php.net/manual/en/filesystem.configuration.php#ini.user-agent或流上下文,它也将包含在请求中.
上面链接中的示例#2:
<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)