2017-03-20 2 views
0

Dies ist der Fluss für meine Webapp:HTTP_REFERER verweist auf die ursprüngliche Website? (Flask)

facebook.com --> mysite.com/route --> mysite.com/foo?uuid=X 

Dies ist, was der Code wie für mysite.com/route aussieht:

@app.route('/route') 
def route(): 
    return redirect(url_for('foo', uuid=some_uuid)) 

Für /foo, ich habe Funktion die folgenden Protokollierungs :

def log_request(route): 
    @functools.wraps(route) 
    def wrapper(*args, **kwargs): 
     keys = ['HTTP_ACCEPT', 'HTTP_ACCEPT_ENCODING', 
       'HTTP_X_FORWARDED_FOR', 'HTTP_REFERER', 
       'HTTP_USER_AGENT', 'PATH_INFO', 
       'QUERY_STRING', 'REMOTE_ADDR'] 
     dumpable = { k:request.environ.get(k, None) for k in keys } 
     print(json.dumps(dumpable)) 
     return route(*args, **kwargs) 
return wrapper 

Der einzige Ort, wo ich @log_request haben, ist für foo:

@app.route('/foo') 
@log_request 
def foo(): 
    ... 

Wenn ich meine Protokolle in Heroku bin Überprüfung, sehe ich folgendes protokolliert:

{"QUERY_STRING": "uuid=3de61bee07794323aaa5899bba2ef9e3", 
"HTTP_ACCEPT_ENCODING": "gzip, deflate", "PATH_INFO": "/foo", 
"HTTP_X_FORWARDED_FOR": "__REDACTED__", "REMOTE_ADDR": "__REDACTED__", 
"HTTP_USER_AGENT": "__REDACTED__", "HTTP_ACCEPT": 
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
"HTTP_REFERER": "http://m.facebook.com"} 

Meine Frage ist, warum ist die HTTP_REFERER http://m.facebook.com? Sollte es nicht mysite.com/route sein?

+0

Ja, weil 'redirect()' den * Browser * auffordert, eine neue Anfrage zu stellen. –

Antwort

0

redirect() bewirkt, dass Flask eine 302 Found Antwort an den Browser sendet, wobei der Header Location auf die neue URL gesetzt wird. Der Browser macht dann eine neue Anfrage, um den neuen Standort zu besuchen. An diesem Punkt zeigt der Header Referer auf die vorherige Position, die die 302-Weiterleitung ausgegeben hat.

Entweder verwenden Sie nicht eine Umleitung (nur rufen Sie Ihren foo Ansicht direkt) oder die Referrer in einem Cookie oder andere Information aufzuzeichnen, dass der Browser auf Ihrem nächsten URL übergeben wird.

Verwandte Themen