Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP通过身份验证从远程URL获取XML-403错误_Php_Xml_Curl_Pear_Http Request - Fatal编程技术网

PHP通过身份验证从远程URL获取XML-403错误

PHP通过身份验证从远程URL获取XML-403错误,php,xml,curl,pear,http-request,Php,Xml,Curl,Pear,Http Request,我有一个提供xml输出的URL。它需要用户名和密码,我可以使用以下格式通过浏览器访问: http://username:password@url.com 但是,当我试图通过php文件访问它时,我得到一个403禁止: $url = "http://username:password@url.com"; $xml = @simplexml_load_file($url); print_r($http_response_header); 我曾尝试使用curl并将用户代理设置为浏览器,但这仍然无

我有一个提供xml输出的URL。它需要用户名和密码,我可以使用以下格式通过浏览器访问:

http://username:password@url.com
但是,当我试图通过php文件访问它时,我得到一个403禁止:

$url = "http://username:password@url.com";


$xml = @simplexml_load_file($url);
print_r($http_response_header);
我曾尝试使用curl并将用户代理设置为浏览器,但这仍然无法响应数据

$username = "user";
$password = "pass";
$process = curl_init("http://user:pass@url.com/feed?feed_id=1");
//curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($process, CURLOPT_HEADER, 1);
curl_setopt($process, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
echo $return;
我还尝试使用pear的http请求2,它也给出了一个403

我试图访问的服务器是拒绝通过PHP进行所有连接,还是有办法解决这个问题?
谢谢

您请求的页面似乎很挑剔。确保完全按照浏览器的方式发送所有标题

  • 在Firefox中安装Firebug,或使用Chrome的inspector
  • 写下请求受保护页面时发送的所有标题
  • 完全按照浏览器的方式从php脚本发送标题
  • 如果它不起作用,请使用Wireshark验证您是否真的做对了
我怀疑该页面还查找用户代理头,而不仅仅是密码


另一个问题可能是您的IP与服务器不同,并且只有您的IP被列入白名单。

尝试删除用户:传入curl init并将浏览器用户代理添加到标头。谢谢,如何添加浏览器用户代理?curl_setopt($process,CURLOPT_USERAGENT,'Mozilla/5.0(Windows;U;Windows NT 6.1;en US;rv:1.9.1.2)Gecko/20090729 Firefox/3.5.2 GTB5');类似这样的。这仍然给出了一个403码。Deni刚才看到使用get请求而不是post