2012-03-08 6 views
3

고객이 양식을 제출할 수있는 웹 사이트를 운영하고 있습니다. 나는 PHP를 서버 측에서 사용하고 있고 POST 메소드 (대형 폼)를 사용하고있다. 문제는 가끔 내 웹 서버에 요청이 게시 정보없이 GET 요청으로 제공된다는 것입니다. 이 문제는 양식이 주어진 고객 위치에서 제출되고 문제가 간헐적 일 때만 발생합니다 (대부분의 경우 시간이 걸립니다).PHP : 인증 서버로 인해 POST 데이터가 손실됩니다.

피들러를 사용하여 어떤 일이 일어나고 있는지 판단하지만 해결 방법을 생각할 수 없습니다. 누군가가 아이디어를 가지고 있는지 보려면 stackoverflow에 게시하십시오. 다음

기본적으로, 시퀀스는 다음

1- POST 요청은 모든 적절한 데이터가 전송된다.

2 POST 요청이 인증 프록시 서버에 의해 가로 챕니다.

3- 프록시 서버는 POST 요청에 HTTP 302 응답을 보내고 인증을 위해 다른 내부 주소로 리디렉션합니다.

4- 인증 거래

5- 프록시 서버가 (302)가 원래 요청을 리다이렉트 마지막 인증 요청을 리다이렉트 답 (401 응답으로, 두 GET 요청) 일어난다.

6 그러나 브라우저는 원본 요청을 POST 요청 대신 POST 정보가없는 GET 요청으로 보내며 원래 요청을 보냈습니다.

최종 결과는 사용자에게 빈 페이지이며 양식 데이터가 손실됩니다.

원본 요청이 POST인데도 URL에 몇 개의 매개 변수가 포함되어있을 수 있습니까? (아마도 브라우저는이 때문에 GET이라고 가정합니까?)?

정상적인 동작입니까? 나는 이것이 표준 (브라우저는 GET으로 302에 항상 대답)에 따라 다르다는 것을 읽었지만, 이런 상황에서 POST 요청에 대한 해결책이 없기 때문에 이것이 사실이라고 믿을 수 없다.

사용자 환경이 좋지 않을 수있는 몇 가지 방법이 있어야합니다. 당신이 무슨 생각을하는지 제게 알려주세요.

답변

0

사용자 정의 ErrorDocument를 특별히 404 페이지에 사용할 때도 이와 비슷한 문제가 발생했습니다. 분명히 404 페이지와 나는 아마도 401을 추측하고 있습니까? 게시 된 데이터가 전송되지 않습니다. 이것 대신에 404 페이지로 간다.하지만 errordocument 대신에 다시 쓰기 규칙을 사용한다. 당신이 게시물 수 또는 대신 $ _REQUEST를 사용할 수 있습니다 얻을 것 경우 알고 주위를 얻을 수없는 경우 여기

아마도 완전히 측의 생각으로 같은 일 작성한 ErrorDocument 404

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_FILENAME}index.php !-f 
RewriteRule ^(.*?)$ /error404.php [L] 

을 수행하기위한 재 작성 규칙을의 어떤 식 으로든 요청을 처리 할 수 ​​있습니다.

+0

이안에게 답해 주셔서 감사합니다. 문제는 게시 요청을 INTERCEPT하는 인증 프록시 서버를 제어 할 수없고 인증 시퀀스를 시작하기 위해 302를 반환한다는 것입니다. 그래서 나는 두 가지 접근 방식을 찾고있었습니다. 1- 인증 순서를 피하는 방법을 찾거나 POST 데이터를 어느 정도 복구합니다 (브라우저 기록에 계속 표시됨). 그러나 지금까지는 성공하지 못했습니다. – PCJISM

관련 문제