我正在构建一个单页Web应用程序,该应用程序调用第三方API(在本例中为Dark Sky weather API)。因为此API不支持CORS,所以我试图编写一个服务器端PHP代理来进行API调用。
我需要能够在HTTP GET请求中包括纬度和经度参数,这些参数是从客户端JavaScript收集的,但是我正努力提出一个工作流程,以将这些JavaScript变量传递给我的PHP。代理。这似乎是一个非常简单的问题,但对我来说是一个新问题。
如果任何人都可以提供有关处理此问题的基本说明,或者将我指向可以解释该问题的资源,那将是很棒的。
我目前正在使用CORS代理发出请求,但由于API请求需要密钥,因此我想在生产中取消使用它。
答案 0 :(得分:0)
如果我很好理解,您只需要在请求的URL上将这些变量设置为查询字符串,然后使用PHP进行处理即可。
您只需要在URL的末尾将它们添加为whateverurlyouhave.com/endpoint?latitude=yourlatitude&longitude=yourlongitude
答案 1 :(得分:0)
这很简单。假设您从一个文本框中得到两个纬度。
步骤1:将经度和纬度发送到服务器
let lat=$('.lat').val();
let long=$('.long').val();
$.ajax({
"crossDomain": true,
"url": "http://yourserver.com?lat=lat&long=long",
"method": "GET",
"success":function(res){
console.log(response);
}
});
第2步:接收和调用外部API
<?php
$lat =$_REQUEST['lat'];
$long =$_REQUEST['long'];
$API_KEY=""; //Your api key
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.darksky.net/forecast/$API_KEY/$lat,$long",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Accept: */*",
"Cache-Control: no-cache",
"Connection: keep-alive",
"Host: api.darksky.net",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}