【发布时间】:2013-03-29 14:48:23
【问题描述】:
我想获取另一个页面的内容。背景是我想发出 AJAX 请求,但由于 Same Origin Policy 我不能这样做。现在我想编写一个自己的 PHP 脚本,在该脚本上发出 AJAX 请求。 URL 如下所示:
我用fopen、curl 和file_get_contents 进行了尝试。作品中没有任何东西。问题是如果我将 URL 作为字符串输入,例如
$results = file_get_contents('http://domain.com/subfolder/another_subfolder/index.php?id=1234&tx_manager_pi9[parameter]=1&tx_manager_pi9[category]=test&tx_manager_pi9[action]=getInfos&tx_manager_pi9[controller]=Finder&cHash=123456789001233455332');
确实有效。如果我输入一个变量
$url = 'http://domain.com/subfolder/another_subfolder/index.php?id=1234&tx_manager_pi9[parameter]=1&tx_manager_pi9[category]=test&tx_manager_pi9[action]=getInfos&tx_manager_pi9[controller]=Finder&cHash=123456789001233455332';
$results = file_get_contents($url);
我来错页了。使用特定参数,我得到一个结果。如果参数没有正确给出,我似乎来到了一个默认页面。我无法理解它。
curl 也一样:
$curlSession = curl_init();
$options = array
(
CURLOPT_URL=>$url,
CURLOPT_HEADER=>false,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_FOLLOWLOCATION=>true
);
curl_setopt_array($curlSession,$options);
$results = curl_exec($curlSession);
这不起作用。如果我将 URL 作为字符串而不是变量输入,我会得到一些结果!我认为与符号& 或方括号[] 是问题,但我不能这么说。 & 应保留,[] 不是正确的 URL 参数。但是为什么直接输入有效而不是变量呢?
我使用该变量是因为我用str_replace 进行了一些替换,使查询更加灵活。
我在这里看到了类似的问题(cURL function not working、curl_setopt doesnt work with url as a variable),但从未发布过真正的解决方案。
【问题讨论】:
-
分配给变量的文字字符串的工作方式相同;问题一定出在其他地方...
-
您是否在 cURL 请求中设置了用户代理?
-
但是在哪里呢?一个简单的
file_get_contents就证明了这个问题。如果我先回显 URL 并在浏览器中打开 URL,它就可以工作。file_get_contents不行。
标签: php curl fopen file-get-contents