我想获取另一个页面的内容。背景是我想发出 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 函数不起作用,curl_setopt 不适用于 url 作为变量),但从未发布过真正的解决方案。