ajax통신 진행 시, success여도 데이터가 넘어가지 않습니다.
본문
현재아래와 같이, ajax로 API통신을 진행하는 사항이 있습니다. 근데, 콘솔창에 success인 "성공"이라는 말이뜨고,
교차 출처 읽기 차단(CORB)으로 MIME 유형이 text/html인 교차 출처 응답(에러도메인)이 차단되었습니다. 자세한 내용은 https://www.chromestatus.com/feature/(일련번호)을 참고하세요.
라는 경고문이 뜨는 상태입니다.
CROB에 대한 오류들은 구글링을 통해 여러방법을 찾아보긴 했으나, 모두 똑같은 경고문구가 뜨는건 매한가지 입니다 ㅠ
성공이라고 뜨는건 일단 데이터 호출이 되었다라고 판단되는데, 해당 API에 할당하는 DB쪽에 아무런 데이터가 들어가있지 않습니다 ㅠ 고수님들의 조언 부탁드립니다.
$.ajax({
crossOrigin: true,
url: "API주소",
dataType: "json",
type: "POST",
async: false,
data: {
member: 'test',
phone: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***',
},
success: function(data) {
console.log("성공");
},
error: function(err) {
console.log("에러")
}
});
답변 4
CORS는 보안상 존재하는것인기 때문에,
1. 대상 사이트에서 접근을 허용하는 방법과
2. javascript ajax -> php curl -> 대상업체 url 형태로 php 에서 대상 사이트에 대해 요청하는 방식으로 처리할수 있습니다.
cors 는 웹서버 설정을 변경해야 하고, 의외로 까다로운 부분들이 있어,
2번 방법으로 보통 처리합니다.
php 에서 api(curl 요청) 를 요청하면, host 와 origin 을 변조(지정) 하여 전송할수 있어서 cors 문제를 회피할수 있습니다.
해당 부분은 도메인이 다른 곳으로 API를 요청하였을때 발생하는 오류 입니다.
해당부분을 해결하기 위해서는 요청을 받는 서버에서 요청받는 도메인을 허용해주여야 합니다.
만약 진행하려고 하시려면 javascript로 처리하는 것이 아니라 php 등 언어로 처리해야 할것 같네요
ajax로는 같은 도메인의 php url를 보내고
php 전달받은 url로 api호출하여 받은 값을 그대로 response 해주는 형태로 개발을 진행하면 될겁니다.
corb는 https끼리만 가능하지요..
받는쪽에서 차단되는거 같은데 api업체에 정상적으로 들어가는지 막히는거면 왜 막히는지 문의해보셔야 할거 같습니다.