programing

JSONP를 사용하여 html 페이지 로드

elecom 2023. 7. 27. 21:38
반응형

JSONP를 사용하여 html 페이지 로드

다음을 사용하여 외부 페이지를 로드하려고 합니다.JSONP하지만 그 페이지는HTML페이지, 나는 단지 아약스를 사용하여 그 내용을 잡고 싶습니다.

편집: 제가 이렇게 하는 이유는 제 서버가 아닌 페이지를 로드할 때 헤더, IP, 에이전트 등 모든 사용자 정보를 전달하고 싶기 때문입니다.

이거 할 수 있어요?지금 당장은 페이지를 가져올 수 있지만 jsonp는 json을 구문 분석하려고 시도하고 오류를 반환합니다.Uncaught SyntaxError: Unexpected token <

샘플 코드:

$.post('http://example.com',function(data){
    $('.results').html(data);
},'jsonp');

사람들이 테스트할 수 있도록 jsfiddle을 설정했습니다. http://jsfiddle.net/8A63A/1/

http://en.wikipedia.org/wiki/JSONP#Script_element_injection

JSONP 호출(즉, 이 사용 패턴을 사용하기 위해)에는 스크립트 요소가 필요합니다.따라서 각 새 JSONP 요청에 대해 브라우저는 "src" 특성에 대한 원하는 값을 사용하여 HTML DOM에 새 요소(즉, 요소를 주입)를 추가(또는 재사용)해야 합니다.그런 다음 이 요소가 평가되고, src URL이 검색되며, 응답 JSON이 평가됩니다.

이제 오류를 확인합니다.

검색되지 않은 구문 오류:예기치 않은 토큰 <

<html 태그의 첫 번째 문자입니다. 아마도 이것이 시작일 것입니다.<DOCTYPE이 경우, 물론, 이는 유효하지 않은 자바스크립트입니다.

그리고 아니요, HTML 데이터를 가져오는 데 JSONP를 사용할 수 없습니다.

나는 당신이 원하는 것을 했지만 나의 경우 HTML을 반환하는 서버 사이드 코드를 제어할 수 있습니다. 그래서 내가 한 일은 HTML 코드를 반환된 객체의 Json 속성 중 하나에 싸서 클라이언트 측에서 사용했습니다.

callback({"page": "<html>...</html>"})

당신이 직면한 구문 오류는 당신이 사용하는 라이브러리가 json을 기대하지만 응답이 HTML이기 때문입니다.

세 단어가 있습니다: 동일 원산지 정책.

원격 URL이 실제로 적절한 JSONP 요청을 지원하지 않는 한, 당신은 당신이 하려는 것을 할 수 없을 것입니다.그리고 그것은 좋은 것입니다.

편집: 물론 서버를 통해 요청을 프록시할 수 있습니다.

정말로 HTML 파일을 해킹하기 위해 클라이언트를 사용하고 싶다면 YQL을 사용하는 flyJSONP를 사용할 것을 제안합니다.또는 잔키를 사용합니다.몇 가지 달콤한 기술을 사용하는 POST:

jankyPOST는 숨겨진 iframe을 만들고 폼(iframe[0].contentWindow.document.body.form.name )으로 채웁니다.

그런 다음 HTML5(레거시 브라우저 보기!) webMessaging API를 사용하여 다른 iframe에 게시하고 iframe의 폼 요소의 밸브를 지정한 값으로 설정합니다.

원격 서버에 양식을 제출합니다... 완료되었습니다.

아니면 그냥 PHP curl, parse, echo 등을 사용할 수도 있습니다.

정확히 어떤 용도로 사용하고 계신지 모르겠지만 도움이 되었으면 좋겠습니다.

또한... 서버 코드에서 출력되는 모든 것을 JSONP할 수 있다고 확신합니다.나는 클라이언트 로그인을 통해 JSON이 그들의 keyGen 페이지에 접속하고 성공적으로 콘솔에 텍스트를 기록했습니다. 텍스트가 b/w 태그였음에도 불구하고.저는 그것에 대해 약간의 다른 오류가 있었지만 요점은 제가 그 출력물을 스크랩했다는 것입니다.

현재 저는 당신의 모습을 하고 있기 때문에 성공하면 다시 글을 올리겠습니다.

저는 이것이 가능하다고 생각하지 않습니다.JSONP를 사용하려면 응답이 올바르게 렌더링되어야 합니다.

만약 당신이 다른 해결책을 원한다면, iframe에 url을 로드하고 iframe을 통해 대화를 시도하는 것은 어떻습니까?효과가 있을지 100% 확신할 수는 없지만 시도해 볼 가치는 있습니다.

먼저 AJAX URL을 수동으로 호출하여 결과 HTML을 확인합니다.

둘째, 바이올린 예제에서 DIV를 종료해야 합니다.

언급URL : https://stackoverflow.com/questions/7531823/use-jsonp-to-load-an-html-page

반응형