如何从其他域访问php文件

时间:2013-12-23 21:11:41

标签: php html dns request

说我有3个网站。每次我在站点(1)上执行操作时,我都需要从(2)和(3)访问file.php,其中包含已完成操作的站点参数(在本例中为(1)),因此,这个例子,我需要访问:

(2).com/file.php?site=1 
(3).com/file.php?site=1

如果行动是从网站(2)和(3)完成的,则同样适用。

最好的方法是什么? (每次在网站(x)上发生行动时,我都不想手动从我的浏览器访问该文件)

我试着做一个简单的事情:

<form method="get" action="(2).com/file.php?site=1"> </form>
<form method="get" action="(3).com/file.php?site=1"> </form>

它不起作用。

我尝试了某种ajax / XMLHttpRequest,并尝试使用“文件”PHP函数。

所以,我的问题是,我该如何处理? “虚拟”打开浏览器并加载PHP文件的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

通过代理使用curl进行跨域查询。

以下是另一个SO问题(How to use CURL via a proxy?

的示例
<?php


$url = 'http://www.php.net';
$proxy = '10.10.10.101:8080';
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;

答案 1 :(得分:0)

我很抱歉因为我没有充分使用搜索功能:(

我会尝试使用curl,但是我使用的代码Prefix在我的网站上不起作用,当我在本地尝试它时,它说没有安装curl,所以我继续尝试接下来的事情在视线中。我最终使用此代码,来自另一个SO线程:How do I send a POST request with PHP?

$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2');

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

var_dump($result)

答案 2 :(得分:0)

您可以正常使用其他域的PHP文件(以处理请求,回显结果等),但是您需要在其他域的PHP文件中添加以下标头。对于ajax或xmlhttprequests,这是必需的。

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");