0

我在 PHP 上使用 cURL 来访问 ASPX 网站。在我的浏览器上,它显示根据请求我得到一个302 Found(实际上是重定向到另一个站点),然后立即对重定向页面发出另一个请求。

在我的 cURL 上,我总是得到200 OK,具有讽刺意味的是错误的,因为我正在访问的下一页(模仿重定向)返回 a 500,可能在前一页中做错了什么。

作为测试,我尝试访问我自己的网站,我在该网站上重定向页面。我也得到了一个200 OK关于curl_getinfo($curl);但返回页面的内容特别显示标题HTTP/1.1 302 Found 更奇怪的事情是curl_getinfo($curl);返回 200 OK 一直,即使当我访问我自己的网站时我实际上知道我正在重定向。

有什么想法为什么我的 200 OK 而不是 302 curl_getinfo

谢谢!

4

2 回答 2

2

我的猜测CURLOPT_FOLLOWLOCATION是开启。

于 2012-04-20T11:19:56.827 回答
2

除了CURLOPT_FOLLOWLOCATION答案:
您还可以设置 CURLOPT_HEADERFUNCTION 选项并查看重定向,例如通过

curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
...
curl_exec($ch);
...
function read_header($curl, $header) {
  echo $header;
  return strlen($header);
}

启用 CURLOPT_FOLLOWLOCATION 后,您应该得到类似的输出

HTTP/1.0 301 Moved Permanently
Date: Fri, 20 Apr 2012 11:26:37 GMT
Server: Apache
Location: http://www.spiegel.de/
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from lnxp-3968.srv.mediaways.net
X-Cache-Lookup: MISS from lnxp-3968.srv.mediaways.net:91
Via: 1.0 lnxp-3968.srv.mediaways.net (squid/3.1.4)
Connection: close

HTTP/1.0 200 OK
Date: Fri, 20 Apr 2012 11:25:38 GMT
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Cache-Control: max-age=120
Expires: Fri, 20 Apr 2012 11:27:38 GMT
X-Host: lnxp-2885
X-Robots-Tag: index, follow, noarchive
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 161305
Vary: Accept-Encoding
Age: 59
X-Cache: HIT from lnxp-3954.srv.mediaways.net
X-Cache-Lookup: HIT from lnxp-3954.srv.mediaways.net:90
Via: 1.1 www.spiegel.de, 1.0 lnxp-3954.srv.mediaways.net (squid/3.1.4)
Connection: close

在这种情况下,这表明对http://spiegel.de的请求被重定向到http://www.spiegel.de

于 2012-04-20T11:30:54.567 回答