2015-02-05 1 views
0

Postgres SQL에 데이터를 덤프하는 Java Restfull Webservice를 사용하고 있습니다. perfectely.Function 작업 자바 WebService에 기능 내가XMLHttpRequest error 요청한 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다.

var obj = { hname: $("#txtRuleName").val(), hdates: $("#txtRuleDates").val(), hremark: $("#txtRuleRemark").val(), isDelete: false, created_date: 'CURRENT_TIMESTAMP', updated_date: 'CURRENT_TIMESTAMP' }; 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json", 
     dataType: "json",     
     xhrFields: { 
      withCredentials: true 
     },   
     url: "http://localhost:8015/PostGresTestDB/rest/db/insert",   
     data: JSON.stringify(obj),   
     success: function (data, textStatus, jqXHR) { 
      alert('Data Inserted successfully...'); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert('generateReportFromMR:Error in processing!'); 
      //alert(jqXHR); 
     } 
    }); 

Webservice를가 http://localhost:8015/PostGresTestDB/rest/db/insert 및 웹 페이지가 실행중인 톰캣 서버에서 실행 아래처럼 JQuery와 아약스에서이 기능에 액세스하려고 지금

@Path("/db") 
public class DBOperaions { 

    @POST 
    @Path("/insert")  
    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
    public String InsertDBData(@PathParam("hname") String hname, 
      @PathParam("hdates") String hdates, 
      @PathParam("hremark") String hremark, 
      @PathParam("isDelete") boolean isDelete, 
      @PathParam("created_date") String created_date, 
      @PathParam("updated_date") String updated_date) { 

    //Data Dumping Code 
    } 
    } 

아래처럼 on http://localhost:42229/index.html

다음 오류가 발생합니다.

XMLHttpRequest는 http://localhost:8015/PostGresTestDB/rest/db/insert을로드 할 수 없습니다. 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 없습니다. 따라서 원점 'http://localhost:49927'은 액세스 할 수 없습니다.

CORS를 시도했지만 성공하지 못했습니다.

아무에게도 내가 할 수있는 일이 정확히 무엇인지 말해 줄 수 있습니까?

답변

1

요청에 대한 데이터 유형으로 'jsonp'를 사용해 볼 수 있습니다. 그것을 사용하여 json 응답을 구문 분석하기위한 구현을 포함 할 자바 스크립트에서 콜백 함수를 지정해야합니다. $ .ajax 함수의 'jsonpCallback'옵션에 설정된 값은 자바 스크립트에서 구현할 별도의 콜백 함수와 같은 이름이어야합니다. $ .ajax의 'success'속성에서 구문 분석 할 코드를 작성하는 대신 콜백 함수에서이를 수행합니다. 실제로 응답을 작성하기 전에 'jsonpCallback'에 지정된 콜백 함수와 동일한 이름의 문자열로 JSON 응답을 래핑하여 Java 소스 코드에서 데이터 덤프 코드를 수정해야합니다.

+0

Info @ Justine.Its는 잘 작동하지만 다른 문제는 내 다른 질문을 설명합니다. http://stackoverflow.com/questions/28336480/calling-parametrized-function-from-jquery-ajax -process-parameters-value-as-null – Jankya

1

저스틴이 말한 것처럼 jsonp가 문제를 해결할 것입니다. 그러나 jsonp 형식을 따라야하기 때문에 모든 상황에서 작동하지 않습니다. 서버 코드에 액세스 할 수있는 한 가지 해결책은 도메인을 허용하도록 서버를 구성하는 것입니다. 모든 출처를 허용하려면 allow origin을 *로 설정하십시오. 이 링크는 도움이 될 수 있습니다 : CORS on Tomcat

관련 문제