Access to XMLHttpRequest at blocked by CORS policy: No 'Access-Control-Allow-Origin' 요거 해결 어떻게 해야 하나요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | 사용안함 |
코인빗,코인원 두군데 다 아래 메시지로 결과를 받아오지 못하는데요.
나오믄 메시지로 검색해봐도 이해가 쉽지 않네요.
ajax 요청에 무언가를 추가해서 해결할 수 있는 문제일까요?
Access to XMLHttpRequest at 'https://api.coinone.co.kr/ticker?currency=all&_=1621844305337' from origin 'https://rxtip.kr' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
jquery-2.2.4.min.js?20201218195938:4 GET https://api.coino
댓글 14
JSONP도 유저가 임의로 쓸 수 있는 것이 아니고, 서비스 제공자 측에서 지원해야 쓸 수 있습니다. 해당 거래소에서 JSONP를 지원하는지는 모르겠네요. 만약 지원한다면 매뉴얼에 나오겠지요.
위젯이나 애드온에서 js로 시작해서 접근하려면,
아마도 php 파일을 하나 만들어서 그쪽으로 url과 파라미터를 넘기고,
해당 php 파일에서 header 값을 추가해주고 json 데이터를 받은 뒤 다시 ajax쪽으로 리턴하는 것으로요.
예전에 링크 파싱 애드온을 그런 식으로 만들었던 기억이 있어요.
이렇게 파일 하나 만들어 놓고 그 파일을 요청하시면 될 거예요.
단, 서버 부하는 책임 못 집니다. 캐시를 적당히 활용한다면 훨씬 더 효율적이겠지요.
어떤 깨달음이 올랑말랑하는 게ㅋ 다시 한번 들여다봐야겠어요 ㅎㅎ
일단 비슷한 proxy 파일 하나 구해서 방금 데이터는 가져오게 했습니다.
이게 저희 서버로 가져와서 결국 php로 가져오는 것이랑 비슷한 결과가 되는가 보네요.
<?php
$url = (isset($_GET['url'])) ? $_GET['url'] : false;
if(!$url) exit;
$referer = (isset($_SERVER['HTTP_REFERER'])) ? strtolower($_SERVER['HTTP_REFERER']) : false;
$is_allowed = $referer && strpos($referer, strtolower($_SERVER['SERVER_NAME'])) !== false;
$string = ($is_allowed) ? utf8_encode(file_get_contents($url)) : 'You are not allowed to use this proxy!';
$json = json_encode($string);
$callback = (isset($_GET['callback'])) ? $_GET['callback'] : false;
if($callback){
$jsonp = "$callback($json)";
header('Content-Type: application/javascript');
echo $jsonp;
exit;
}
echo $json;
?>
요런 파일이네요.
js 에서 proxy 를 사용했더니 위젯 캐시가 안먹는 문제가 있네요..
캐시를 적용할 방법을 찾아봐야겠습니다.
그냥 위젯 php 에서 불러오는 것으로 바꿔야 하는게 맞을 듯 하구요.
proxy 에서
<?php echo file_get_contents('https://api.coinone.co.kr/ticker?currency=all'); ?>
위 코드 파일 만들어서 변경했습니다.
나중에 이 여기에 캐시를 적용할 수 있는지 연구해봐야겠습니다.
예전에 코로나19 정보 데이터 캐시로 저장했는데 같은 방식일 것 같긴 합니다.
원래 빗썸인가 제외하고는 코인원은 가능했던 부분이라