2010-06-09 3 views
2

웹 사이트 용 html 위젯을 만들고 있습니다. 현재 주가 지수를 표시한다고 가정 해 봅시다.
요컨대, 임의의 웹 사이트 소유자는 내게서 코드 스 니펫을 가져 와서 자신의 웹 페이지 http://website.com/index.html에 포함시킵니다. 임의의 사용자가 http://website.com/index.html을 열 때 코드가 내 서버 (provider.com)에 요청을 보내면 필요한 작업을 수행하고 사용자의 브라우저에 정보를 반환합니다. 응답이 도착하면 http://website.com/index.html에 관련 재고 값이 표시됩니다. index.html을 서비스에서 서버와 통신하는 html 위젯

는 문제가 same origin policy에 지금이

<script type="text/javascript" src="provider.com/service.js"> </script> 
<div id="target_area"></div> 
<script type="text/javascript"> 
    service.show("target_area", options); 
</script> 

처럼 호출 할 수 있습니다 : 난 그냥 provided.com에 website.com에서 아약스 요청을 보내고에 HTML을 반환 할 수 없습니다 고객의 웹 페이지에 삽입합니다. 아래에 나열된 몇 가지 해결책이 있지만 아무도 나를 만족시키지 못합니다. 네가 뭔가 제안 할 수 있다면, 특히 관련 경험이 있다면 궁금해.

1) iframe, plain 및 simple. 단점 : 일부 브라우저에는 고정 치수 + 바보 같은 스크롤 막대가 나타나야합니다. javascript로 고칠 수 있지만,이 브라우저마다 변하지 않는 것은 나에게 좋지 않습니다.

2) JSONP. 문제 : html 전체 덩어리를 반환 할 수 없으며 데이터 만 반환해야합니다. 그런 다음 브라우저 측면에서 javascript를 사용하여 index.html에 정적으로 배치 된 HTML 스 니펫에 데이터를 포함해야합니다. 데이터 형식이 그리 간단하지 않고 나중에 변경 될 수도 있기 때문에 좋지 않습니다.

3) 숨겨진 iframe을 사용하여 아약스 요청을하십시오. 조금 까다 롭긴하지만 갈 길 같은데.

글쎄, 그 주제에 대한 내 생각. 더 좋은 방법이 있습니까?
나는 기존의 위젯을 확인하려고했지만 많은 유용한 정보를 찾지 못했습니다. 이 문서에 사용 된

모든 도메인 이름은 허구와 SLaks 제안으로 어떤 유사점은 작품 지금 순전히 우연의 일치 :

업데이트입니다! 옵션 : 사람이 세부 사항에 관심이 있다면, 응답 HTML 당신은 " 'JSONP'dataType와"로 jQuery를 사용할 수 있습니다, 그 후

body = body.gsub '"', '\\"' 
body = body.gsub /\n/, '\\n'; 
body = body.gsub '/', '\\/'; 
body = params[:callback] + '("' + body + '");'; 

이 (루비)와 같은 사후 처리되어야한다.

답변

1

JSONP를 사용하여 원시 HTML이 포함 된 문자열을 보낼 수 있습니다.

여기서 JSONP가 가장 좋습니다.

+0

등, 암호화 및/또는 provider.com, 인증 및 권한 부여와의 통신을 압축, 잠시 동안 캐싱 답변처럼, 프록시에 가치를 추가 할 수 있다는 것입니다 이스케이프 HTML 및 문자열 상수로 반환 할? 서버에서 이러한 종류의 후 처리를 추가하는 것은 까다로울 수 있지만 (레일에서 루비를 사용하고 있지만 자바에서 너무 사소한 것은 아님) 좋은 아이디어 인 것 같습니다. 어쨌든, 한번 시도해 볼게! –

+0

환경에 JSON 인코더가 있어야합니다. – SLaks

+0

사실,하지만 그것은 json을 반환하고 html은 반환하지 않는다고 가정합니다. 모든 것을 인코딩하는 것은 다소 까다 롭습니다 (따옴표, 줄 바꿈 등 바꾸기). 그러나 나는 가고 있습니다. –

1

과거에이 문제를 해결 한 방법은 website.com에서 매우 가벼운 프록시를 실행하여 클라이언트의 AJAX 요청을 받아서 provider.com으로 전달하고 올 결과를 다시 보내는 것입니다 provider.com에서 다시. 환경에 수용 가능한 솔루션인지 확실하지 않습니다. 이 솔루션의

장점 중 하나는, 당신은 당신은 의미

+0

감사합니다. 그러나 웹 마스터는 통제 할 수없는 website.com의 서버 유형에 부당한 요구 사항을 부과합니다. 하지만 시도에 대한 +1 어쨌든 :) –

관련 문제