2012-12-24 1 views
2

내가 간단한 작업을 수행하기 위해 노력하고 실패 :HTTP 303 (SeeOther) : 작품을 GET은 POST는

  1. POST URL로를
  2. 반환 HTTP 303 (SeeOther) 새로운 URL
  3. 에서
  4. GET 또한 http://en.wikipedia.org/wiki/Post/Redirect/Get

    : 내가 무엇을 말할 수에서

이 꽤 표준 방법입니다 SeeOther는 다음과 같이 작동합니다. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4

저는 서버 측 컨트롤러로 web.py를 사용하고 있지만 문제가 아닌 것으로 생각됩니다. 내가 찾으면, SeeOther는 예상대로 완벽하게 작동합니다. 같은 URL로 POST하면 브라우저가 아무것도 리디렉션하거나로드하지 못합니다.

브라우저 문제라고 생각하여 IE9와 Google Chrome (v23 ish)을 모두 시험해 보았습니다. 둘 다 똑같은 문제가 있습니다.

생각해 보면 web.py가 페이지를 잘못 제공했거나 잘못된 URL을 생성했기 때문에 텔넷을 사용하여 헤더를 검사했습니다. 나는이 발견 :

HTTP GET (이 브라우저에서 작동) :

GET /Users/1 HTTP/1.1 
HOST: domain.com 

HTTP/1.1 303 See Other 
Date: Mon, 24 Dec 2012 18:07:55 GMT 
Server: Apache/2 
Cache-control: no-cache 
Location: http://domain.com/Users 
Content-Length: 0 
Content-Type: text/html 

HTTP POST (이것은 브라우저에서 작동하지 않습니다) :

POST /Users/1 HTTP/1.1 
HOST: domain.com 

HTTP/1.1 303 See Other 
Date: Mon, 24 Dec 2012 18:12:35 GMT 
Server: Apache/2 
Cache-control: no-cache 
Location: http://domain.com/Users 
Content-Length: 0 
Content-Type: text/html 

던질 수있는 또 다른 일을 작동중인 렌치 : 사용자가 볼 수있는 domain.com/Users/1이 실제로 domain.com/control.py/Users/1이되도록 mod-rewrite를 사용하고 있습니다.

더 많은 정보가있을 수 있습니다. 내가 가지고있는 정보/문제 해결,하지만 지금은 비어 있습니다.

[질문 :

왜 GET 요청과 작업,하지만이 POST 요청합니까? 어딘가에 응답 헤더가 누락 되었습니까?

편집 :

IE9 개발자 도구를 사용하고, (303)는 POST 후 브라우저로 돌아 오지 않을 것처럼 크롬의 경위, 그것은 보인다. 그러나 GET 요청을하면 303이 표시됩니다.

그러나 Chrome Inspector를 자세히 살펴본 후 모든 요청을 기록 할 수있는 기능을 보았습니다 (각 페이지 호출시 삭제 안 함). 이것은 내가 어떤 이유로 POST 요청이 실패한 것처럼 보일 수 있음을 보여 주었다. 다시 - GET은 정상적으로 작동합니다.

+0

Chrome Inspector에서 무엇을 볼 수 있습니까? 303 클라이언트 측에서 수신합니까? 리디렉션 루프가있는 경우 Chrome에서 콘솔에 오류가 표시됩니다. –

+0

@JanusTroelsen 질문에 대한 답변을 포함하도록 질문을 업데이트했습니다. 또한, 여기에 대한 질문이 여기에 대한 첫 번째 질문인데, 나는 의견에 대답하는 것이 더 적절했는지 여부를 모르겠다. 나는 질문에 더 많은 내용을 넣는 것이 미래의 독자들에게 더 쉽다고 생각했다 ... – Dan

+0

괜찮아. POST 요청은 어떻게 실패합니까? –

답변

1

전적으로 문제가되지 않을 수도 있지만 코드를 게시하지 않았으므로 잠시 알려드립니다.

web.py를 사용하고 있으므로 POST 메서드가 객체에 정의되어 있습니까?

urls = (
    '/page', 'page' 
) 

class page: 

    def POST(self): 
     # Do something 

    def GET(self): 
     # Do something else 
+0

이 질문을 업데이트하는 것을 잊어 버렸습니다. - 문제가 리디렉션과 관련이 없음을 발견했습니다. 근본적인 문제는 실제로 브라우저가 내 webpy 앱에서 POST 요청을 완전히받지 못하는 것입니다. 내가 뚜렷하게 다른 문제를 발견했다. http://stackoverflow.com/questions/14132343/http-post-response-fails-using-web-py – Dan