728x90
공공데이터로 API를 사용할 때 자주 CORS 문제에 마주했었다.
개발하는 도중 CORS 문제가 생겼을 때는 로컬 환경에서 두 가지 방법으로 해결해서 데이터를 확인했다.
1.
첫 번째는 https://cors-anywhere.herokuapp.com/corsdemo 이곳에서 request 버튼을 클릭하여 요청하고 불러오고자 하는 URL 앞에 "https://cors-anywhere.herokuapp.com/" 를 붙여주었다.
2.
두 번째는 확장앱을 사용했다. 브라우저에 확장앱을 추가하고 Allow CORS를 해주면 된다.
하지만 이 두가지는 로컬 환경에서 해결해줄 뿐이고 내 도메인에 업로드할 경우엔 여지없이 막히는 문제가 있었다.
3.
이 경우에는 api를 php로 받아와서 js에서 php를 불렀더니 잘 불러와진다.
let requestOptions = {
method: "GET",
redirect: "follow",
};
fetch("test2.php", requestOptions)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
<?php
$cPage = $_GET['cPage'];
$shapeRealm = $_GET['shapeRealm'];
echo callAPI("GET","http://www.culture.go.kr/openapi/rest/koreanpattern/individualizations/2d?serviceKey=PF9LAJQoopohm%2Bi%2BBlO%2FJn7Lf6nT2aorMXAUsPRVsjlLEfwFmcOF4PHdCylgveVUWm8hAvKR1qC0Z7jVJ4IqYg%3D%3D&cPage=".$cPage."&shapeRealm=".$shapeRealm);
// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value
function callAPI($method, $url, $data = false)
{
$curl = curl_init();
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
?>
문제가 생겼을 때 어찌어찌 해결하면 다음에 또 생각이 안 나서 정리해봤다.
728x90
'프로그래밍 > JavaScript' 카테고리의 다른 글
[Javascript] forEach() (0) | 2021.07.31 |
---|---|
[Javascript] 삼항 연산자 (0) | 2021.07.22 |
댓글