Ich habe ein Problem mit den HTTP-Headern, die das Modul Requests zurückgibt.Anforderungen HTTP-Header
Ich verwende den folgenden Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
response = requests.get("http://www.google.co.il",proxies={'http': '','https':''})
data = response.text
# response.text returns the appropriate html code
# (<!doctype html><html dir="rtl" itemscope=""....)
if response.status_code == requests.codes.ok:
# How do I send those headers to the conn (browser)
print "HEADERS: " + str(response.headers)
conn.send(data)
Ich versuche, eine GET-Anfrage zu senden, www.google.co.il und die Antwort an den Browser (am Beispiel I genannt schicken es "conn"). Das Problem ist, dass der Browser den empfangenen HTML-Code nicht anzeigt und stattdessen ERR_EMPTY_RESPONSE empfängt. Die Header in der Antwort sind:
HEADERS: {'Content-Length': '5451', 'X-XSS-Protection': '1; mode=block', 'Content-Encoding': 'gzip', 'Set-Cookie': 'NID=103=RJzu4RTCNxkh-75dvKBHx-_jen9M8iPes_AdOIQqzBVZ0VPTz1PlQaAVLpwYOmxZlTKmcogiDb1VoY__Es0HqSNwlkmHl3SuBZC8_8XUfqh1PzdWTjrXRnB4S738M1lm; expires=Wed, 08-Nov-2017 10:05:46 GMT; path=/; domain=.google.co.il; HttpOnly', 'Expires': '-1', 'Server': 'gws', 'Cache-Control': 'private, max-age=0', 'Date': 'Tue, 09 May 2017 10:05:46 GMT', 'P3P': 'CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."', 'Content-Type': 'text/html; charset=windows-1255', 'X-Frame-Options': 'SAMEORIGIN'}
Jemand sagte mir, dass das Problem ist, dass ich keinen Header an den Browser sendet bin. Ist das wirklich das Problem? Irgendwelche anderen Vorschläge ? und wenn es das Problem ist, wie sende ich die entsprechenden Überschriften an den Browser?
Edit: Ich habe vergessen zu erwähnen, dass die Verbindung über einen Proxy-Server ist.
Jede Hilfe wäre großartig!
Vielen Dank, Yahli.
Was ist der 'conn'? Steckdose ? –
Ja, 'conn' ist eine Buchse. –
Etwas wie ein abfangender Proxy richtig? Sie müssen eine vollständige HTTP-Antwort an den Browser senden, nicht nur den Text. Wenn Sie Sockets verwenden, können Sie 'Requests' überspringen und die HTTP-Anfrage mit' socket' senden. Wenn Sie darauf bestehen, 'Anfragen' zu verwenden, müssen Sie den Header aus dem' response' Objekt konstruieren. –