채택완료

ajax통신 진행 시, success여도 데이터가 넘어가지 않습니다.

현재아래와 같이, ajax로 API통신을 진행하는 사항이 있습니다. 근데, 콘솔창에 success인 "성공"이라는 말이뜨고, 

교차 출처 읽기 차단(CORB)으로 MIME 유형이 text/html인 교차 출처 응답(에러도메인)이 차단되었습니다. 자세한 내용은 https://www.chromestatus.com/feature/(일련번호)을 참고하세요.

라는 경고문이 뜨는 상태입니다.

CROB에 대한 오류들은 구글링을 통해 여러방법을 찾아보긴 했으나, 모두 똑같은 경고문구가 뜨는건 매한가지 입니다 ㅠ

성공이라고 뜨는건 일단 데이터 호출이 되었다라고 판단되는데, 해당 API에 할당하는 DB쪽에 아무런 데이터가 들어가있지 않습니다 ㅠ 고수님들의 조언 부탁드립니다.

Copy
$.ajax({
            crossOrigin: true,
            url: "API주소",
            dataType: "json",
            type: "POST",
            async: false,
            data: {
                member: 'test',
                phone: '01000000000',
            },

            success: function(data) {
                console.log("성공");
            },
            error: function(err) {
                console.log("에러")
            }
        });
|

답변 4개

채택된 답변
+20 포인트

CORS는 보안상 존재하는것인기 때문에, 

1. 대상 사이트에서 접근을 허용하는 방법과

2. javascript ajax -> php curl -> 대상업체 url 형태로 php 에서 대상 사이트에 대해 요청하는 방식으로 처리할수 있습니다.

cors 는 웹서버 설정을 변경해야 하고, 의외로 까다로운 부분들이 있어, 

2번 방법으로 보통 처리합니다.

php 에서 api(curl 요청) 를 요청하면, host 와 origin 을 변조(지정) 하여 전송할수 있어서 cors 문제를 회피할수 있습니다.

2023-01-29 (일) 21:20:16

받는쪽에서 차단되는거 같은데 api업체에 정상적으로 들어가는지 막히는거면 왜 막히는지 문의해보셔야 할거 같습니다.

corb는 https끼리만 가능하지요..

2023-01-29 (일) 16:26:44

해당 부분은 도메인이 다른 곳으로 API를 요청하였을때 발생하는 오류 입니다.

해당부분을 해결하기 위해서는 요청을 받는 서버에서 요청받는 도메인을 허용해주여야 합니다.

만약 진행하려고 하시려면 javascript로 처리하는 것이 아니라 php 등 언어로 처리해야 할것 같네요

ajax로는 같은 도메인의 php url를 보내고

php 전달받은 url로 api호출하여 받은 값을 그대로 response 해주는 형태로 개발을 진행하면 될겁니다.

답변을 작성하려면 로그인이 필요합니다.