2014-12-24 6 views
0

저는 장고 시스템을 개발하고 있으며 실시간으로 채팅 서비스를 만들어야합니다. 이를 위해 node.js와 socket.io를 사용했습니다.Ajax가 노드에서 django를 호출합니다.

django에서 노드로 일부 정보를 얻으려면 모든 주소가 localhost 일 때 매우 효과적이었던 일부 아약스 호출을 만들었지 만 이제는 시스템을 webfaction에 배포하여 일부 오류가 발생하기 시작했습니다.

djando 서버의 URL은 example.com이고 노드 서버는 chat.example.com입니다. 나는 아약스 내가 브라우저에이 오류가 장고에 전화를받을 수 있도록하는 경우 :

XMLHttpRequest cannot load http://chat.example.com/socket.io/?EIO=3&transport=polling&t=1419374305014-4. Origin http://example.com is not allowed by Access-Control-Allow-Origin. 

은 아마 좀 개념을 오해하지만 난 어느 쪽을 알아내는 힘든 시간을 보내고 있습니다.

나는 문제가 생각하는 조각이 하나입니다

socket.on('id_change', function(eu){ 
    sessionid = data['sessionid'] 

    var options = { 
     host: 'http://www.example.com', 
     path: '/get_username/', 
     method: 'POST', 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Content-Length': sessionid.length 
     } 
    } 
    var request = http.request(options, function(response) { 
     response.on('data', function(msg){ 
      console.log('Received something') 
      if(response.statusCode == 200){ 
       //do something here 
       } 
      } 
     }) 
    }) 

    request.write(sessionid); 
    request.end(); 
}); 

그리고 socket.io.js를 제공하고 노드 서버에 대한 연결을 관리하기 때문에 설정의이 부분은 괜찮습니다.

대단히 감사합니다!

답변

0

크로스 원본 리소스 공유 문제로 부딪 히고 있습니다. 자세한 내용은이 게시물을 참조 : How does Access-Control-Allow-Origin header work?

을 나는 전혀 장고 코더 아니지만,이 참조 페이지 (https://docs.djangoproject.com/en/1.7/ref/request-response/#setting-header-fields)에서 당신이 응답을 생성하는 적절한 장소에서 같은 것을 할 필요가 다음과 같습니다

+0

django에 대한 ajax 호출의 응답에는'Access-Control-Allow-Origin : http : // chat.example.com'이 포함되어야하며 그렇지 않은 경우에는? 그리고 당신은 내가 장고에서 그것을 어떻게 할 것인지에 대한 어떤 생각을 가지고 있습니까? 감사 – user2449798

관련 문제