2011-02-11 2 views
0

모바일 앱을 개발 중이며 WebView에 내장 된 HTML/CSS/JS에서 대부분의 부품을 처리하려고합니다. HTML/CSS/JS 코드가 로컬 파일 시스템에 있어야하는 동안 앱은 XML 웹 서비스에서 데이터를 가져와야합니다. 그러나 WebKit은 Origin을 로컬 파일에 대해 null로 설정하기 때문에 Ajax 호출에 대해 "동일한 출처 정책"을 적용 할 수 있습니다. 그러나 나는 $ .ajax 매개 변수에서 "xml"대신 "jsonp"로 dataType을 설정하면 Chrome (parserError)에서 호출이 실패하지만 디버거에서 웹 서비스에서 반환 된 데이터를 볼 수 있음을 확인했습니다. 내 질문은 : 그것은 어떻게 든 응답 데이터를받을 때 호출 된 기본 콜백을 무시할 수 있습니까? 그렇지 않다면 무엇을 할 수 있습니까? 웹 서비스를 실행하는 서버에 액세스 할 수 없습니다. 이 문제에 대한 다른 스레드에서 Ajax 호출 작업 대신 페이지로드 요청을하는 것을 읽었습니다. 그러나 그것이 의미하는 바가 무엇인지/어떻게해야하는지 명확하지 않습니다. 나는 이것에 어떤 조명을 주셔서 감사합니다!WebKit의 JS 동일 출처 정책 : 데이터는 여기에 있지만 액세스 방법은 무엇입니까?

답변

0

JSONP는 Padding이있는 JSON이고 URL (GET 전용)은 <script> 태그로로드되며 JSONP 응답에 실제 JSON이 첫 번째 인수 인 함수 호출이 포함되어 있다고 가정합니다.

Twitter와 같은 대부분의 원격 웹 서비스는 'callback ='GET 매개 변수를 지원합니다. 예 :

GET /my/jsonp/?callback=myFunction 

응답 내용은 'JavaScript'파일이어야합니다.

myFunction({"code": 200, "status": "OK"}); 

JSONP입니다.

+0

그래, 명시적인 서버 측 지원없이 트릭이 작동하지 않는다고 생각합니다. –

+0

불행히도 예, 대부분의 사람들이 보는 다른 옵션은 원격 요청을 수행하는 동일한 도메인에 로컬 '프록시'를 만드는 것입니다. 그러나 웹 사이트 대신 로컬 파일을 실행하고있는 것을 볼 수 있습니다 (올바르게 이해 한 경우). 이것은 옵션이 아닙니다. 어쩌면 별도의 원격 위치에서 JSONP에서 JSON 응답을 래핑하는 프록시 스크립트를 만들지 않는 한 .. – CharlesLeaf

+0

설명해 주셔서 감사합니다! –

관련 문제