2017-03-24 6 views
0

프록시 서버 뒤에서 내 웹 서비스에 연결하는 데 문제가 있습니다. 나는 다음과 같은 서비스프록시 서버에서 나머지 웹 서비스에 연결하는 중 오류가 발생했습니다.

@GET 
@Produces(MediaType.TEXT_PLAIN) 
public Response getBackgroundImages(@QueryParam("missions") String missions, 
            @QueryParam("objects") String objects, 
            @QueryParam("dates") String date) { 

    String result= ""; 
    ...... 
    try { 
     ..... 
     result = dbman.extractQueriedData(queryMissions, queryObjects, date); 
     } else { 
      result = dbman.extractPopular();   
     } 

    } catch(SQLException ex){ 
     LoggingServices.createExceptionLogMessage(ex, LOGGER);  
    } 
    return Response.ok() 
     .entity(result) 
     .header("Access-Control-Allow-Origin", "*") 
     .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT") 
     .allow("OPTIONS").build(); 

}

내가 로컬 서버에있는 모든 실행하고 때 코드가 작동을 호출하는 다음 아약스 호출

$.ajax({  
     async: false, 
     url: "http://localhost:8080/Card/rest/UploadBackground"  
    }).done(function (data) { 
     arr = JSON.parse(data); 
     updateSlider(arr); 
    }).fail(function (data) { 
     alert('falied'); 
    });   

있습니다. 나는이 크롬 그물 내부 페이지로 I에 따라 오류가 발생하는 프록시 서버 뒤에있는 서버에 업로드 할 때 너무

245: URL_REQUEST 
http://localhost:8080/Card/rest/UploadBackground 
Start Time: 2017-03-23 16:23:19.477 

t=12380 [st= 0] +REQUEST_ALIVE [dt=1305] 
        --> priority = "HIGHEST" 
        --> url = "http://localhost:8080/Card/rest/UploadBackground" 
t=12380 [st= 0] URL_REQUEST_DELEGATE [dt=0] 
t=12380 [st= 0] +URL_REQUEST_START_JOB [dt=1305] 
        --> load_flags = 51008 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | IGNORE_LIMITS | MAYBE_USER_GESTURE | VERIFY_EV_CERT) 
        --> method = "GET" 
        --> url = "http://localhost:8080/Card/rest/UploadBackground" 
t=12380 [st= 0]  URL_REQUEST_DELEGATE [dt=0] 
t=12380 [st= 0]  HTTP_CACHE_GET_BACKEND [dt=0] 
t=12380 [st= 0]  HTTP_CACHE_OPEN_ENTRY [dt=0] 
t=12380 [st= 0]  HTTP_CACHE_ADD_TO_ENTRY [dt=0] 
t=12380 [st= 0]  HTTP_CACHE_READ_INFO [dt=0] 
t=12380 [st= 0]  +HTTP_STREAM_REQUEST [dt=303] 
t=12380 [st= 0]  HTTP_STREAM_REQUEST_STARTED_JOB 
         --> source_dependency = 248 (HTTP_STREAM_JOB) 
t=12683 [st= 303]  HTTP_STREAM_REQUEST_BOUND_TO_JOB 
         --> source_dependency = 248 (HTTP_STREAM_JOB) 
t=12683 [st= 303]  -HTTP_STREAM_REQUEST 
t=12683 [st= 303]  +HTTP_TRANSACTION_SEND_REQUEST [dt=0] 
t=12683 [st= 303]  HTTP_TRANSACTION_SEND_REQUEST_HEADERS 
         --> GET /Card/rest/UploadBackground HTTP/1.1 
          Host: localhost:8080 
          Connection: keep-alive 
          Accept: */* 
          Origin: http://mycard.xxx.yyy 
          User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 
          Referer: http://mycard.xxx.yyy/mainPage.html 
          Accept-Encoding: gzip, deflate, sdch, br 
          Accept-Language: en-US,en;q=0.8 
t=12683 [st= 303]  -HTTP_TRANSACTION_SEND_REQUEST 
t=12683 [st= 303]  +HTTP_TRANSACTION_READ_HEADERS [dt=1002] 
t=12683 [st= 303]  HTTP_STREAM_PARSER_READ_HEADERS [dt=1002] 
         --> net_error = -324 (ERR_EMPTY_RESPONSE) 
t=13685 [st=1305]  -HTTP_TRANSACTION_READ_HEADERS 
         --> net_error = -324 (ERR_EMPTY_RESPONSE) 
t=13685 [st=1305] -URL_REQUEST_START_JOB 
        --> net_error = -324 (ERR_EMPTY_RESPONSE) 
t=13685 [st=1305] URL_REQUEST_DELEGATE [dt=0] 
t=13685 [st=1305] -REQUEST_ALIVE 
        --> net_error = -324 (ERR_EMPTY_RESPONSE) 

사람이 오류가 무엇인지 설명 할 수있는 그대로? 프록시 서버와 관련이 있습니까?

환호,

ES 나는 마침내 그것을 작업 가지고 4 일 이상 후

솔루션

합니다. 문제는 단순히 도메인 간 문제 였고 해결 방법은 jsonp와 올바른 URL 매핑을 사용하는 것이 었습니다. 서버 측에서 I는 MediaType.APPLICATION_JSON에 MediaType에 변경 및 반환 값이 콜백 함수 이름 감싸 하였다

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public String getBackgroundImages(@QueryParam("missions") Stringmissions, 
            @QueryParam("objects") String objects, 
           @QueryParam("dates") String date) { 

String result= ""; 
...... 
try { 
     ..... 
     result = dbman.extractQueriedData(queryMissions, queryObjects, date); 
    } else { 
     result = dbman.extractPopular();   
    } 

    } catch(SQLException ex){ 
     LoggingServices.createExceptionLogMessage(ex, LOGGER);  
    } 
     return String res = "jsonCallback("+ result +");"; 

    } 

및 자바 스크립트 측

$.ajax({  
 
     async: false, 
 
     url: "/rest/UploadBackground/",  
 
\t \t jsonp: "callback", 
 
      type:"GET", 
 
      dataType: "jsonp", 
 
      jsonpCallback: "jsonCallback", 
 
      success: function(response) {     
 
      }    
 
    
 
});  
 
    
 
window.jsonCallback = function(data) { 
 
    //do something 
 
};

에 아래 참조

가장 많이 발생하는 문제는

  • 서버 반환 값은 콜백 함수 이름으로 줄 바꿈되어야합니다.
  • 콜백 함수는 내가 아는 한 주어진 서명으로 전역 적으로 정의되어야합니다. 이것은 다른 도움이 될 것입니다

희망,

환호,

ES

답변

1

"로컬 호스트는"루프백 주소 127.0.0.1로 확인되는 특별히 정의 된 이름,이고,이다 동일한 컴퓨터에서만 사용할 수 있으며 다른 네트워크에서는 액세스 할 수 없습니다.

URL에 권한이 "localhost"인 경우 서버와 동일한 컴퓨터에서만 작동합니다.

+0

올바른 문제는 실제 URL 매핑입니다. – Goozo