2012-11-16 2 views
0

두 개의 서로 다른 서버가 있으며 한 서버에서 다른 서버로 포스트 데이터를 보내야합니다. 그러나 아래에 설명 할 몇 가지 문제가 있습니다. 먼저 설명해 드리겠습니다.POST 데이터로 페이지를 리디렉션하는 방법

  • 첫 번째 서버는 Linux에서 실행되는 Apache + PHP를 사용합니다.
  • 두 번째 서버가 Windows에서 실행되는 IIS를 사용하고 있습니다. PHP가 설치되었습니다.

지금, 여기에 내가 할 노력하고있어 무엇을 :

내 첫 번째 서버에
  • 는 사용자가 양식을 채우고 동일한 서버에있는 파일로 제출합니다.
  • 해당 파일에서 사용자가 채운 데이터를 처리하고 내 사용자를 두 번째 서버의 페이지로 리디렉션합니다. 이 리디렉션은 내 데이터 처리 결과를 POST 요청으로 가져와야합니다.
  • 내 초 서버에 여전히 내 사용자가 신용 카드 정보 입력을 마칩니다. 그런 다음 지불을 처리합니다.
  • 내 결제가 처리 된 후 (IIS 서버에서) 내 사용자가 더 많은 POST 데이터 (지불 처리 결과)가있는 첫 번째 서버의 다른 파일로 리디렉션됩니다.

내 사용자 을 리디렉션하는 방법을 '반향'하지 않고 다시 제출하는 방법을 모르겠다.

나는이 주제에 대해 많은 책을 읽었으며, 내 apache가 cURL을 사용하여 게시물 데이터를 보내거나 심지어 stream_context_createstream_get_contents을 사용하여 결과를 검색하도록 관리했습니다. 하지만 내가하고 싶은 일은 요청을 발송하고 결과를 표시하는 대신 게시물 데이터와 함께 사용자를 리디렉션합니다.

this question의 사본이 아닙니다. 내 서버에 파일이 없기 때문에 q0987의 데이터가 사용자 세션에 저장하는 것이 불가능합니다.

header 함수는 응답 헤더 만 생성하기 때문에 header 함수를 사용하여 요청을 만들 수 없음을 알고 있습니다.

IIS 서버에 라이브러리를 설치할 수있는 권한이 없습니다 (예 : cURL/libcurl). 첫 번째 서버에서 지불을 처리 할 수 ​​없으며 IIS 만 VISAnet 라이브러리에 액세스 할 수 있습니다. 또한 IIS에 모든 것을 넣을 수 없습니다.

나는 PHP로 그 목표를 달성하려고 노력하고 있지만, 내가하려는 일이 가능할지조차 모른다.

사용자 기록 (및 뒤로 버튼)이 엉망으로 양식을 적어서 제출하고 싶지 않습니다.

+0

, 당신은 다음, 서버 1에 양식을 아약스 수 있을까? 두 서버 모두에서 데이터 유효성 검사를 중복하는 것을 의미 할 수도 있습니다. 유지 보수의 악몽처럼 들린다. –

+0

내 조언은 이렇게하지 않을 것입니다. 결제 게이트웨이를 설정하는 것처럼 들립니다. 이 상황에서 내가해야 할 일은 거기에 server1에 제출 된 사용자 정보를 캐시하고 토큰을 사용하여 server2로 사용자를 리디렉션하는 것입니다. 그런 다음 서버 2가 cURL 또는 다른 방법을 사용하여 server1에 연결하고 사용자가 신뢰할 수있는 채널을 통해 제출 한 데이터에 대한 토큰을 교환하게하십시오. 그렇지 않으면 사용자가 프록시 나 다른 도구를 사용하여 server2로 전달되기 전에 데이터를 조작 할 위험이 있습니다. 그러면 악의적 인 사용자가 구매 가격과 같은 데이터를 변경할 수 있습니다. – Wige

+0

이 과정에서 데이터가 변경되면 '처리됨'으로 표시되지 않습니다. XML VISA에서 제공하는 응답에는 사용자가 정보를 변경했는지 확인하기 위해 데이터베이스에 대해 확인해야하는 모든 정보가 들어 있습니다. 또한 마틴 린 (Martin Lyne)은 참으로 유지 보수의 악몽입니다. 다른 방법으로는 할 수 없습니다. (제 회사는 VISANET 시스템에서 첫 번째 서버를 인증하거나 두 번째 서버에서 계속 생산할 수 없습니다.) –

답변

2

리디렉션에 POST 동사를 사용할 수 없습니다. 나는 당신의 문제는 서버 간 상호 작용으로 해결 될 수 있다고 생각 :이 서버 2에 좋은 유효성 게시물 양식을 응답하는 경우 컬 등없이

server-1 receives data 
server-1 sends data to server-2 and server-2 responds some associated id with that data 
server-1 redirects user to server-2 with id in redirect uri query 
server-2 receives user's GET request (id is stored in uri query). 
server-2 receives data with given id 
viola - server-2 knows what server-1 sent to it 
0

설명하신대로 할 수 없습니다. 그것은 의도적으로 설계된 것이며, 그렇게 할 의도가 없습니다. 그것이 가능하다면 완전히 새로운 악용 세계를 열어 놓을 것입니다.

접근 방식을 변경해야합니다. 그러면 어떻게해야하는지에 대해 오해가 있습니다.

관련 문제