2012-06-30 4 views
3

요청을 서버로 보냈습니다 referer url을 가져오고 싶습니다. appengine에서 webapp2 프레임 워크를 사용하고 있습니다.게시 요청에 대한 referer url을 python/webapp2에서 가져옵니다.

내가 수행 할 때

def post(self, slug): 
    print self.request 

나는 다음과 같은 출력을 얻을 :

OST /first/person/ HTTP/1.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Language: en-US,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 43 Content-Type: application/x-www-form-urlencoded Content_Length: 43 Content_Type: application/x-www-form-urlencoded Cookie: djdt=hide; csrftoken=09f29b2bfe9f51f16581bab7fe7c6f38; sessionid=49b995d954eae8d613cedc3f4e92a796 Host: 127.0.0.1:8080 Origin: http://127.0.0.1:8080 Referer: http://127.0.0.1:8080/person/1/ 

명확하게 볼 수 있습니다로 난 단지 리퍼러에 관심이 Referer: http://127.0.0.1:8080/person/1/

이 때문에 내가 시도 :

referer = self.request.headers['Referer'] 
      print referer 
출력을 제공

: 요청에 문자열 처리를 할 것 얻기의

False Status: 200 Content-Type: text/html; charset=utf-8 Content-Length: 0 Cache-Control: no-cache 

한 가지 방법,하지만 난 뭔가 더 표준이있을 것입니다 확신합니다. 귀하의 코멘트에서 언급 한 바와 같이

+0

'Referer' 헤더는'self.request.referer' 속성으로도 액세스 할 수 있습니다. –

+0

도 반환 : * 거짓 상태 : 200 Content-Type : text/html; charset = utf-8 Content-Length : 0 Cache-Control : no-cache * – user993563

답변

15

, 이것은 당신이, 그것은 간단 할 수있다 요청이 온 곳에서 위치로 사용자를 리디렉션하려는 그러나 경우, webapp2에서 일어나는로 : 게시물에 대한

webapp2.redirect(self.request.referer) 
2

요청 self.request.referer이 작동하지 않습니다. 이것은 get 요청에 대해서만 작동합니다.

get 요청이 들어올 때 (보통 뭔가를 게시하기 전에) 리퍼러를 쿠키에 저장 한 다음 해당 쿠키에 액세스 할 때 게시합니다.

def get(self): 
    self.response.headers.add_header('Set-Cookie', 'referer=%s; Path=/' % self.request.referer) 
    # render your html 
def post(self): 
    # your logic here 
    referer = str(self.request.cookies.get('referer')) 
    self.redirect(referer) 

전역 변수도 작동해야합니다.

0

나처럼, 당신은 원래의 참조 자에 관심이 있지만, ENV를 조회하여 작동하는 것 같다, 코드에서 깊이 있고 요청에 직접 액세스 할 수없는, 경우

original_referrer = os.environ.get('HTTP_REFERER') # NOTE: spelling is correct 

결과를 로컬로, 같은 것입니다

http://0.0.0.0:8001/myendpiont/someid?a=true 
관련 문제