2012-06-07 3 views
2

내 블로그 게시물 모음으로 연결되는 링크를 보여주는 페이지를 만들고 그 게시물에 대한 덧글 개수와 함께 각 링크 옆에 작은 풍선을 표시하려고합니다. 가장 쉬운 방법은 disqus가 개발자 문서에서 말하는 "Javascript public facing API"를 사용하는 것입니다. 내가 jQuery를에서로드하려고 할 때 그것이 나에게 할 수있는로드하지 지칠대로 지친 XMLHttpRequest를 제공하지만Disqus Javascript API localhost의 crossdomain 문제

https://disqus.com/api/3.0/threads/details.json?forum=BLOG_FORUM&thread:ident=BLOG_THREAD&api_key=PUBLIC_API_KEY

: 원산지 인을 나는 브라우저에서이 링크를 방문하면

나는 내가 찾고 오전 JSON을 얻을 Access-Control-Allow-Origin에 의해 허용되지 않습니다.

$ .getJSON() 및 $ ("# div") .load()를 사용하여로드하려고 시도했습니다.

Disqus API의 "내 공개 키에 연결된 도메인"설정에 localhost와 127.0.0.1을 모두 추가했습니다.

+0

"Javascript public facing API"를 찾을 수 없습니다. 그들의 [JavaScript 페이지] (http://docs.disqus.com/developers/js/)에는 몇 가지 사항이 있지만 그와 같은 것은 없습니다. –

+0

그들은 첫 문장에서이 부분에 대해 이야기합니다 : http://disqus.com/api/docs/requests/ 그러나 그들은 훨씬 더 설명하지 않습니다 :( – user573117

+0

문제는 JSONP 요청을해야한다는 것입니다. 이것에 대한 사실상의 표준은 콜백 매개 변수입니다 .' jQuery.getJSON'을 사용하면'& callback =? '을 추가 할 수 있고 jQuery가 거기에서 가져올 수 있습니다.이 카운트가 더 쉬울 것이라고 생각합니다 –

답변

3

클라이언트 측 this API을 사용하려면 JSONP 요청을 수행해야합니다. 이것에 대한 사실상의 표준은 함수 이름을 지정하는 콜백 매개 변수입니다. Disqus도 .json.jsonp으로 변경해야합니다. jQuery.getJSON을 입력하면 &callback=?을 추가하면 jQuery가 거기에서 가져옵니다.

+0

나는 항상 나쁜 요구를했습니다, 나는 이해할 수 없습니다. Mootools -> Request.JSONP ({..})를 사용합니다. send(); URL : "https://disqus.com/api/3.0/threads/list.jsonp?api_key=9ldXlWCWlsyjMI3qvf03Y8OQCNxvAMklHkrNVcpBKm220XJHXsU0QDd00TCLM1kz&callback=?" 나를 도울 수 있습니까 ??? – Donovant

0

실제로 스크립트 및 데이터 기반 특성을 사용하여 these instructions 다음을 수행하면됩니다. Disqus count.js 스크립트를로드 한 다음 data- 속성을 사용하면됩니다.

EDIT : 정수 here 만 표시하도록 구성 할 수 있습니다 (그 다음에 원하는대로 스타일을 지정할 수 있습니다).

+0

이것은 pr 본다. Matthew를 생략하면 감사합니다. 조금만 시도해보고 작동 방식을 알려줍니다 – user573117

+0

단일 페이지 응용 프로그램에서는 불가능합니다. – CMCDragonkai

1

나는 그냥 상단에이 헤더를 필요가 있다고 생각 :

<?php header('Access-Control-Allow-Origin: http://disqus.com'); ?> 
3

당신은 "localhost"를 응답 헤더에 원산지 항목으로 추가 기운 다. 이 CORS에 대한 때문에 자바 스크립트 보안 사양입니다

액세스 제어 - 허용 - 원산지하는 XMLHTTPRequest/AJAX를 통해 데이터에 액세스 할 수있는 웹 사이트를 허용하는 *로 설정할 수 있습니다하지만 당신은 할 수 없습니다 "localhost"으로 설정하십시오. 이 문제를 극복하기

가능한 해결 방법은 다음과 같습니다 는 공개/위치에 요청을 페이지를 호스팅하고 응답 헤더에 액세스 제어 - 허용 - 원산지를 호스트 이름을 포함하려면.

,이

또는 최후의 수단으로, URL에 지정하여 <script> 태그에 스크립트와 함께 JSON 결과를로드를 달성하기 위해 &callback=?와 JSONP 요청을 사용할 수 있습니다 언급 한 "@Matthew Flaschen"로 "SRC"속성과 JSON 데이터에 액세스
예 : 문제의 같은 종류있어 <variable_name>={JSONObject} 기술과 스크립트가로드, 데이터가 그 변수
어떤 사람들을 통해 액세스를 포함하는 서버 측에 결과를 수정 here

여전히 브라우저가 Access-Control-Allow-Origin=localhost을 거부하는 이유를 모르지만 Access-Control-Allow-Origin=*을 지원합니다 (공개 웹 사이트는 데이터에 액세스 할 수 있지만 ..........).이 문제에 음모가있을 수 있습니다 (웹 사이트 추적 해당 데이터에 액세스)