source

JSONP 요청 반환 오류: "Uncaught SyntaxError:예기치 않은 토큰 :"

nicesource 2023. 8. 7. 22:37
반응형

JSONP 요청 반환 오류: "Uncaught SyntaxError:예기치 않은 토큰 :"

그래서 다음과 같은 jQuery 코드로 Stack Exchange API에 요청하려고 합니다.

$.ajax({                                                                                                                                                                                                        
    type: 'POST',                                                                                                                                                                                                 
    url: 'http://api.stackoverflow.com/1.1/stats',                                                                                                                                              
    dataType: 'jsonp',                                                                                                                                                                                                
    success: function() { console.log('Success!'); },                                                                                                                                                                                       
    error: function() { console.log('Uh Oh!'); }                                                                                                                                                              
});   

그러나 FireFox 또는 Chrome 컴퓨터에서 파일을 열고 요청을 하면 다음 오류가 발생합니다.

Resource interpreted as Script but transferred with MIME type application/json.
Uncaught SyntaxError: Unexpected token :
Uh Oh!

무슨 일인지 전혀 모르겠어요.Stack Exchange API Gzips의 응답을 알고 있는데, 문제가 발생할까요?

SO API가 작동하려면 파격적인 매개 변수를 설정해야 합니다.일반적인 것보다.callback당신은 a를 통과해야 합니다.jsonp매개 변수

게다가, 당신은 할 수 없습니다.POSTJSONP와 함께.

$.ajax({                                                                                                                                                                                                        
    type: 'GET',                                                                                                                                                                                                 
    url: 'http://api.stackoverflow.com/1.1/stats',                                                                                                                                              
    dataType: 'jsonp',                                                                                                                                                                                                
    success: function() { console.log('Success!'); },                                                                                                                                                                                       
    error: function() { console.log('Uh Oh!'); },
    jsonp: 'jsonp'                                                                                                                                                
});

기존 XMLHTTPRequest를 사용하여 도메인 간 AJAX를 수행할 수 없습니다.이는 보안상의 이유(같은 출처 정책이라고 함) 때문입니다.

해결 방법이 있습니다.script태그는 이 제한 사항이 적용되지 않습니다.즉, 다음을 삽입할 수 있습니다.scriptURL을 호출하는 문서에 태그를 지정합니다.스크립트에서 전역적으로 액세스할 수 있는 함수를 정의하고 원격 서버에 해당 함수의 이름을 알려주면 서버는 호출로 전송할 데이터를 래핑하는 코드를 해당 함수에 전달할 수 있습니다.

StackOverflow API에 문제가 있었습니다.일반적으로, 당신은 다음을 사용할 것입니다.callback서버에 사용자의 함수를 호출하는 인수입니다.그러나 StackOverflow의 API는 다음을 사용하도록 요청합니다.jsonp매개 변수 대신 사용합니다.

다음 URL을 사용해 보십시오. http://api.stackoverflow.com/1.1/stats?jsonp=callme

"call me"는 글로벌 네임스페이스(창 개체)에 있는 콜백 함수의 이름입니다.

참고로 Firefox를 실행 중이고 JSONView 추가 기능이 설치되어 있다면 위의 URL(및 비교를 위해 사용자의 URL)을 직접 테스트할 수 있습니다.

URL을 호출한 결과:

callme({
  "statistics": [
...
  ]
})

언급URL : https://stackoverflow.com/questions/6046008/jsonp-request-returning-error-uncaught-syntaxerror-unexpected-token

반응형