아하
생활

생활꿀팁

내추럴한돌꿩39
내추럴한돌꿩39

Http 통신에서 목적지와 다른 시스템으로부터 응답이 가능할까요

셜계도상에 클라이언트가 www.ggg.com으로 http를 호출하고 서버간통신으로 www.ttt.com으로 호출하여 www.ttt.com에서 클라이언트로 응답하는식으로 되어있는데 이게 가능할까요?

가능하다면 어떤식으로 가능할까요?

55글자 더 채워주세요.
6개의 답변이 있어요!
  • initial.D
    initial.D

    안녕하세요~

    문의 주신 내용의 제가 이해한 내용이 맞을진 모르나 답변드려봅니다.

    클라이언트->www.ggg.com->www.ttt.com->클라이언트 로의 응답이 가능한지에 대한 문의로 이해를 했습니다. 결국 크로스 도메인에 대한 구현인 듯 한데요..

    기본적으로 크로스 도메인은 보안적으로 취약하기 때문에 권장하는 구현 방식은 아닙니다.브라우저에서 기본적으로 차단도 될거구요..

    결론적으로 http의 응답구조에서 위 부분은 불가한 것으로 알고 있습니다. Client-Server 의 호출에서 요청에 대한 응답이 한세션으로 이루어져 있기 때문에 위 구조라 하면

    클라이언트->www.ggg.com->www.ttt.com->www.ggg.com->클라이언트 의 flow 로 구현이 되겠네요. (내부적으로 다른 도메인에서 데이터를 가지고 와서 최종 응답은 요청을 받은 서버에서...)

    만족할만한 답변이 되셨는지 모르겠네요. 좋은 하루 되세요.

  • 안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.

    www.ggg.com 과 www.ttt.com 이 질문자님이 구성하실 내부 네트워크 http 서비스인 경우 웹서버의 리버스 프록시로 해결할 수 있습니다. 다만 실제 요청한 호스트가 다르므로 www.ggg.com 에서 호스트 헤더를 변경하여 www.ttt.com 으로 던져줘야 합니다.

    만약 www.ttt.com이 인증서가 있는 외부 서비스일 경우엔 포워드 프록시를 사용해야 합니다. 오픈소스 Nginx에선 기본적으론 포워드 프록시를 지원하지 않으므로 스퀴드 프록시를 사용하시면 됩니다.

    참조 - Nginx 빌드로 포워드 프록시 구현 : https://www.alibabacloud.com/blog/how-to-use-nginx-as-an-https-forward-proxy-server_595799

    답변이 도움이 됐으면 합니다. 좋은 하루 되세요

  • ttt.com에서 클라이언트에게 바로 응답할 수는 없습니다. ggg.com이 ttt.com을 호출하고 받은 결괏값을 클라이언트에 전달하는 릴레이 방식이라면 가능합니다.

    꼭 클라이언트가 ttt.com의 응답을 직접 받아야 한다면 메시지 대기열(MQ)을 사용하는 게 좋을 것 같습니다.

    ttt.com은 대기열에 결과를 저장하고 클라이언트는 대기열을 지켜보고 있다가 결과가 들어오면 꺼내 사용하는 비동기 방식이 일반적입니다.

  • 방화벽이나 네트웍 정책이 열려있다는 가정하에

    클라이언트에서 A서버 호출이후

    A서버에서 클라이언트에 response를주기전에

    A서버와 B서버에 HttpUrlConnection 을 통해서 결과값을받아와

    다시 클라이언트로 리턴하는 방식이 있을것 같습니다.

    답변이 도움됐으면 좋겠습니다

    감사합니다

  • 셜계도상에 클라이언트가 www.ggg.com으로 http를 호출하고 서버간통신으로 www.ttt.com으로 호출하여 www.ttt.com에서 클라이언트로 응답하는식으로 되어있는데 이게 가능할까요?

    가능하다면 어떤식으로 가능할까요?

    ===> 중간에 프록시 서버를 놓으시면 됩니다.

  • 탈퇴한 사용자
    탈퇴한 사용자

    다른 서버로부터 응답을 받도록 하는 것을 이야기하는 것으로 보입니다.
    하지만 http 는 요청과 응답으로 구성되는 구조로 통신을 하게 되어 있습니다.
    따라서 직접적으로 www.ttt.com 에서 클라이언트로 응답을 바로 할 수는 없습니다.

    하지만 논리적으로 클라이언트가 서버의 기능을 가지고 있고 www.ttt.com 에서 클라이언트로 직접적으로 접근이 가능하다면 아래와 같은 방식으로 해당 설계 내용을 유사 구현하게 할 수는 있을 것 입니다.

    만약 클라이언트가 공개된 형태가 아니고 서버로서의 역할 을 할 수 없다면 ggg.com 을 통해 응답을 해야 할 것 입니다.