반응형
워드프레스 웹사이트에서 AJAX를 호출할 때 API키를 확보하는 방법은?
이미 우리 회사 제품이 나열되어 있는 지역 온라인 스토어에 API 호출을 한 후 세부 정보, 태그, 사진 등을 JSON으로 반송하고 싶습니다.내 API 키를 보호하는 것 외에 중요한 정보는 포함되지 않았습니다.
API 키를 보호하고 GET/POST를 다른 웹사이트로 요청하려면 어떻게 해야 합니까?
사이트 방문자로부터 API 키를 숨기려면 자신의 사이트에 있는 PHP 스크립트를 사용하여 릴레이 역할을 합니다.Ajax 요청(API 키 없음)을 수신하고 키를 추가하여 자체 API 요청을 한 다음 브라우저에 응답을 반환합니다.
예: 자바스크립트
var dataString = "item=" + $('#item').val() + "&qty=" + $('#quantity').val();
$.ajax({type: "POST", url:"/myrelays/getstockdata.php", data: dataString, success: function(data){ your function to handle returned data } });
stockdata. php 스크립트(매우 거친 골격)를 가져옵니다.
<?php
header('Content-Type: application/json; charset=utf-8');
$api_key = 'xyz1234';
$result = array('status'=>'Error','msg'=>'Invalid parameters');
// your code to sanitize and assign (Ajax) post variables to your PHP variables
// if invalid: exit(json_encode($result));
// make API request with $api_key
$url = 'https://api.provider.com/stockdata.json?key=' . $api_key . '&item=' . $item . '&qty=' . $qty;
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_FAILONERROR, TRUE); // identify as error if http status code >= 400
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); // returns as string
$api_response = curl_exec($ch);
if(curl_errno($ch) || curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 ) :
$result['msg'] = 'Item not found or unable to get data. ' . curl_error($ch);
curl_close($ch);
exit(json_encode($result));
endif;
curl_close($ch);
$decodedData = json_decode($api_response, true);
// check for success and do any server side manipulation of $decodedData
$result['status'] = 'OK'];
$result['msg'] = '$decodedData';
exit(json_encode($result));
?>
참고: 스크립트에서 보통 "HTML"을 브라우저로 다시 전달합니다.따라서 스크립트의 "Json" 비트를 변경해야 할 수도 있습니다."header"(스크립트의 첫번째 줄)이 필요 없을 수도 있습니다.
언급URL : https://stackoverflow.com/questions/48496583/how-to-secure-api-key-when-making-ajax-call-from-wordpress-website
반응형
'programing' 카테고리의 다른 글
C에서 (char)0과 '\0'의 차이점은 무엇입니까? (0) | 2023.10.17 |
---|---|
Angular js 지시어의 post link vs pre link (0) | 2023.10.17 |
SQL GROUP BY - COUNT() 함수 사용 (0) | 2023.10.17 |
자바스크립트의 루프 타이머 (0) | 2023.10.17 |
DOM-Container를 통해 Highchart 차트에 액세스하려면 어떻게 해야 합니까? (0) | 2023.10.17 |