Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
flashrest的麻烦:通过php代理传递头_Php_Flash_Http_Rest_Proxy - Fatal编程技术网

flashrest的麻烦:通过php代理传递头

flashrest的麻烦:通过php代理传递头,php,flash,http,rest,proxy,Php,Flash,Http,Rest,Proxy,我正在编写ActionScript3 flash游戏,它需要访问赞助商(游戏买家)指定的REST服务——比如高分等等。我知道如何使用URLLoader、URLRequest、set-URLRequestHeader 不幸的是,赞助商位于共享主机上,无法将crossdomain.xml放入服务器根目录中,因此我无法从我的localhost flash游戏()连接到它。我了解到有一种方法可以通过在不同服务器上的php文件代理调用来连接RESTAPI 所以我在我的私有服务器上有一个proxy.php文

我正在编写ActionScript3 flash游戏,它需要访问赞助商(游戏买家)指定的REST服务——比如高分等等。我知道如何使用URLLoader、URLRequest、set-URLRequestHeader

不幸的是,赞助商位于共享主机上,无法将crossdomain.xml放入服务器根目录中,因此我无法从我的localhost flash游戏()连接到它。我了解到有一种方法可以通过在不同服务器上的php文件代理调用来连接RESTAPI

所以我在我的私有服务器上有一个proxy.php文件,我这样称呼它:

www.myserver.pl/scripts/proxy.php?url=http%3A%2F%2sponsorserver.hosting.com/api/init.json
                                  (url=URLEncoded address)
它连接(返回HTTP 200),但是我还不知道如何将自定义头传递给init.json脚本;我尝试了通过GET和POST发送它们的所有组合,以及通过GET和POST调用脚本(使用RESTClient FF扩展)

这是proxy.php:

$getvars = 'myparam1=3;&myparam2=data;'; // for test purposes
$url = $_GET['url'] . '?' . $getvars;
$session = curl_init($url);

curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec_follow($session);

echo $response;

curl_close($session);
不幸的是,我的服务器有base_dir!=''所以我不能设置CURLOPT_FOLLOWLOCATION并使用curl_exec,因此curl_exec_follow(取自这个so答案:)。这可能是init.json没有拾取GET变量的原因吗?它说它没有看到myparam1和myparam2。不幸的是,我无法在我的服务器上更改php.ini,需要一种方法使其工作,以便我可以从IDE中集成和测试发起人的RESTAPI。谢谢

编辑:这太愚蠢了,我想发送给发起人脚本的不是GET变量,而是http头。因此,我删除了$getvars并添加了:

curl_setopt ($session, CURLOPT_HTTPHEADER, Array('myparam1=3','myparam2=data'));
在curl\u exec\u调用之前,在内部,在每次新的curl\u exec调用之前,理论上应该设置头并使其通过。很遗憾,脚本仍然看不到标题:(

另外,根据,我尝试通过将.htaccess放在www.myserver.pl/scripts/中来删除base_opendir限制:

<IfModule mod_php5.c>
  php_value open_basedir ""
</IfModule>

php\u值打开\u basedir“”
但这不会改变什么,也许我没有

“AllowOverride选项”或“AllowOverride All”权限

所以CURLOPT_FOLLOWLOCATION仍然是非法的

不幸的是,我无法在我的服务器上更改php.ini,需要一种方法使其工作,以便我可以从我的IDE集成和测试赞助商的RESTAPI。谢谢


这些天来,找个没用的借口。每月花15美元买一台托管在亚马逊云上的服务器。花15美元比花一个小时为一个容易解决的问题编写代码更容易。你可能在共享托管计划上花了10美元。

这个答案既没有真正的帮助,也不礼貌(在撤销编辑之前更糟糕)。除此之外,我对我的服务器很满意,已经使用了将近2年。而且-更改赞助商端的服务器并不能解决问题,如图所示: