2010-12-12 2 views
0

jquery ajax와 함께 서블릿을 사용할 때 문제가있었습니다. js 코드가 포함 된 html 파일을 서블릿과 동일한 프로젝트에 넣으면 작동합니다. 그러나 다른 컴퓨터에서이 HTML을 사용하고 URL을 사용하면 ajax에 대해 http://192.168.1.5:8084/****/Servlet을 얻었지만 아무 것도 얻을 수 없었습니다.서블릿으로 jquery ajax

$.ajax({ 
    url:'http://192.168.1.5:8084/****/Servlet', 
    data: ajaxdata, 
    type:'GET', 
    dataType:'text/html', 
    //contentType: "text/html", 
    success:function(json) { } 
}); 

어떤 아이디어가 있습니까? 감사. 모두가 같은 서버에있는 경우

답변

0

! 퍼즐은

아약스에서이라고 동일 출처 정책 문제, 그것은 작동합니다.

은 매우 좋은이 링크를 읽어

Ways to circumvent the same-origin policy

http://www.petefreitag.com/item/703.cfm 

스택의 검색을 통해 당신이 답변의 많은

+0

오. 고마워. 이런 일을 성취하기 위해 서블릿 대신 실제 webservice를 사용해야합니까? 예를 들어 웹 서비스 URL – jigsaw

+0

에서 일부 데이터를 가져올 수 있습니다. 그것은 ajax 서비스가 아닙니다. Ajax는이 "같은 기원"정책을 가지고 있습니다. 하지만 서블릿에 액세스하여 필요한 데이터를 얻을 수 있습니다. – jigsaw

0

당신은 다른 사이트에 요청을 보낼 AJAX를 사용할 수 없습니다 얻을 것이다 흐름 .

0

이것은 도메인 간 아약스를 만들기 때문에 발생합니다. 브라우저는 보안 문제이기 때문에 이것을 금지하는 경향이 있습니다.

herehere을 참조하십시오.

는 서블릿을 제어 할 경우

3

을 (그들이 동일한 서버에있을 때 분명히 어떤 문제가되지 않습니다)는 HTTP Access-Control 헤더를 설정합니다. 이렇게하면 XMLHttpRequest를 실행 한 클라이언트가 응답을 처리 할 수 ​​있는지 여부를 서버 측에서 제어 할 수 있습니다. 최근 (및 알맞은) 웹 브라우저는 이에 따라 조치를 취합니다.

response.setHeader("Access-Control-Allow-Origin", "*"); // Everone may process the response. 
response.setHeader("Access-Control-Allow-Methods", "GET"); // Commaseparated string of allowed request methods. 

대안이 JSONP이다가도 this article 참조 :

다음은 예입니다.