PHP无需查询即可获取URL

时间:2012-12-16 13:56:29

标签: php javascript jquery ajax api

我正在尝试使用jQuery和PHP(作为代理)从服务中获取。

这是我的PHP获取JSON。

<?php 

    if (!isset($_GET['url'])) die();
    $url =  urldecode($_GET['url']);
    $url = 'http://' . str_replace('http://', '', $url);
    echo file_get_contents($url);

 ?>

用JS操纵数据(抱歉不得不删除密钥):

var api ='proxy.php?url=http://api.buycraft.net/v3?secret=MY-SECRET-KEY&action=payments';

$.getJSON(api, function(data){
     $.each(data, function(i, donor){
       console.log(donor);
     });
}); 

所以转到proxy.php?url=http://api.buycraft.net/v3?secret=MY-SECRET-KEY&action=payments只会返回以下内容:

{"code":100,"payload":[]}

但如果我直接访问JSON,我可以看到我想要的数据

{
"code": 0,
"payload": [
{
"time": 1349661897,
"packages": [
"49381"
],
"ign": "notch",
"price": "15.99",
"currency": "USD"
}

例如。

我知道这是因为php删除了?action=payments查询。即使我使用&amp;而不是&。那么有没有办法阻止PHP从URL中删除查询?

2 个答案:

答案 0 :(得分:1)

将API密钥保存在您的php中,并且出于明显的安全原因,请不要在您的javascript中将其公开给客户端。您也可以在php配置中存储整个URL(proxy.php除外)。

还应该实现使用CURL来淘汰数据。允许一些错误处理,以便在API不可用时将信息发送回客户端

答案 1 :(得分:0)

尝试从后端PHP脚本中删除它:

$url =  urldecode($_GET['url']);

PHP会自动为您执行此操作。