2013-04-11 4 views
4

자바 스크립트 코드를 통해 gcm 메시지를 보내려고합니다. 이를 위해 json 객체를 게시해야합니다.gcm 메시지 (자바 스크립트)

url 및 json 객체 형식은 gcm 문서()로 제공됩니다.

테스트 목적으로 완벽하게 작동하는 Java 코드를 작성했습니다. 하지만 자바 스크립트 코드가 작동하지 않습니다. 누구든지 샘플 코드 (javascript for gcm)가 있으면 게시하십시오.

String body = "registration_id=proper_id&data.number=12345678"; 
byte[] bytes = body.getBytes(); 
HttpURLConnection conn = getConnection(url); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setFixedLengthStreamingMode(bytes.length); 
conn.setRequestMethod("POST"); 
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
conn.setRequestProperty("Authorization", "key=" + key); 
OutputStream out = conn.getOutputStream(); 
out.write(bytes); 

자바 스크립트 코드 :

var http = new XMLHttpRequest(); 
var url = "https://android.googleapis.com/gcm/send"; 
http.onreadystatechange = function() { 
if (http.readyState == 4 && http.status == 200) {  document.getElementById("target").innerHTML = http.responseText; 
} 
} 
http.open("POST", url, false); 
http.setRequestHeader("Content-type", "application/json"); 
http.setRequestHeader("Authorization", "key=proper_api_key"); 
var data = '{ "collapse_key": "qcall","time_to_live": 108, "delay_while_idle": true,"data": {"number":"12345678"},"registration_ids":["proper_id"]}'; 
http.send(data); 

답변

3

이 작동하지 않습니다 때문에 Same-origin Policy 컴퓨팅에서

에, 동일 출처 정책은 브라우저의 수에 대한 중요한 보안 개념 입니다 - 측 프로그래밍 언어 (예 : ). 이 정책은 동일한 사이트의 페이지에서 실행되는 스크립트 (스키마, 호스트 이름 및 포트 번호 조합이 )가 특정 제한 사항없이 서로의 메서드와 속성에 액세스 할 수 있지만 대부분의 메서드에 액세스하지 못하도록하고 페이지 전체에서 속성을 사용할 수 없도록합니다 다른 사이트에.

간단히 말해서 : HTTP 포스트는 스크립트가 실행되는 도메인과 다른 도메인으로 보낼 수 없습니다.

은 여기에서 rules of the Same-origin Policy

당신은 자바 코드 사용자 또는 호스팅 업체 당신이 PHP를 사용할 수있는 자바를 지원하지 않는 경우 필요 확인할 수 있습니다. This question about GCM and PHP은 GCM을 위해 작동하는 PHP 스크립트가있는 것 같습니다.

굿 럭