0

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

这是我获取 JSON 的 PHP。

<?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 中删除查询?

4

2 回答 2

1

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

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

于 2012-12-16T14:03:41.333 回答
0

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

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

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

于 2012-12-16T14:00:34.037 回答