我正在尝试使用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
查询。即使我使用&
而不是&
。那么有没有办法阻止PHP从URL中删除查询?
答案 0 :(得分:1)
将API密钥保存在您的php中,并且出于明显的安全原因,请不要在您的javascript中将其公开给客户端。您也可以在php配置中存储整个URL(proxy.php
除外)。
还应该实现使用CURL来淘汰数据。允许一些错误处理,以便在API不可用时将信息发送回客户端
答案 1 :(得分:0)
尝试从后端PHP脚本中删除它:
$url = urldecode($_GET['url']);
PHP会自动为您执行此操作。