Dieser Artikel vermittelt Ihnen relevantes Wissen über Python, das hauptsächlich Probleme im Zusammenhang mit dem HTTP-Protokoll in die notwendige Grundlage für Schnittstellenautomatisierungstests einführt. Ich hoffe, es wird für alle hilfreich sein.
Empfohlenes Lernen: Python-Video-Tutorial
Wenn Sie das HTTP-Protokoll als Person vergleichen und diese Person gründlich verstehen möchten, werden Sie auf jeden Fall zuerst die Persönlichkeit der anderen Person verstehen Eigenschaften warten. Was sind also die Merkmale des HTTP-Protokolls? Im Allgemeinen verfügt es über die folgenden Funktionen:
- 1 Die erste Funktion:
HTTP-Protokoll unterstützt den Client/Server-Modus
, da das HTTP-Protokoll ein Mitglied desTCP- und IP-Protokolls ist suites Ein Mitglied wird wie andere Mitglieder
für die Kommunikation zwischen dem Client und dem Server verwendet. Die Funktionsweise desClient/Server-Modus
besteht darin, dass der Client eine Anfrage an den Server sendet Der Server antwortet. Ein Dienst, der alleHTTP-Anfragen
anfordert und die Kommunikation vom Client herstellt, und der Server sendet keine Antwort, bevor er eine Client-Anfrage empfängt das HTTP-Protokoll.HTTP协议支持 客户/服务端 模式
;因为 HTTP 协议 是TCP、IP 协议簇的一员,与其他成员一样
,用于客户端与服务器之间的通信;而客户/服务器模式
的工作方式是由客户端向服务器发出请求,服务器端响应请求,并进行响应的服务;所有的HTTP请求
都是从客户端开始建立通信,服务器端在没有接收到任何的客户端请求之前是不会发出响应的;这就是 HTTP协议 的特点之一
。
- 2、第二个特点:
简单快速
;客户端向服务器请求服务的时候,只需要传入请求的方法和路径;常用的请求方法有GET、HEAD、POST
(除了这三种之外,还有其他不那么常用的方法,有兴趣的小伙伴可以在 HTTP协议状态及报文组成 一文进行拓展);由于 HTTP协议 简单,使得 HTTP服务器的程序规模小,因而通信速度很快。
- 3、第三个特点:
灵活
;之所以灵活是因为 HTTP 允许传输任意类型的数据对象;传输的类型由Content-Type
加以标记内容类型,支持多种内容格式的传输。(兼容性很强)
- 4、第四个特点:无连接;这里的无连接可不是没有连接的意思,而是限制每个连接只处理一个请求。服务器处理完客户端的请求并收到客户端的应答之后,就断开连接。采用如此的设计方式呢,能够节省传输时间。
- 拓展:可能有同学认为一个页面有很多个 HTTP 请求,来回这样连接、断开会效率很低。其实早期这么做的原因是因为产生于互联网,因此服务器需要处理同时面向全世界 数十万、上百万 的网页访问。但是每个客户端(或者说浏览器)与服务器之间交换数据的间歇性特别大,所以 HTTP 的传输是具备突发性与顺时性的,大部分通道实际上会很空闲,无端的占用资源比较浪费。因此呢, HTTP 的设计者有意使用这样的特点将协议设计为
请求的时候建立连接,请求完就释放连接。
尽快的将资源释放出来服务给其他的客户端,无论怎样,对于同一个客户端来说,还是每一次只处理一个请求,所以我们也能看出来 HTTP 协议的另外一个优点,它很专一。(*^▽^*)
- 5、最后一个特点:无状态; 无状态的意思就是说
HTTP协议对于事务的处理没有记忆能力
;缺少状态就意味着如果后续处理需要前面的信息,则必须要重传,这就很可能会导致每次连接传送的数据量增大。另一方面,在服务器不需要先前的信息时它的响应就比较快。
PS:所以 HTTP 的这些特性是既有优点也有缺点。
- 优点:优点在于解放服务器,每一次请求点到为止不会造成不必要的连接占用。
- 缺点:缺点在于每一次请求都会传输大量的重复内容信息。
- 所以保持 HTTP 连接的两种技术就应运而生了,那就是
cookie
与session
。
现在我们知道 HTTP协议 是一种请求与响应的模式,那么就来一起认识一下 HTTP的请求和响应吧,先从 HTTP协议的请求说起。
请求
是发送给接口的数据对象,包括接口的地址(也就是常说的 URL
🎜2. Die zweite Funktion:
Einfach und schnell
: Wenn der Client einen Dienst vom Server anfordert, muss er nur die häufig verwendete Anforderungsmethode übergeben sind GET, HEAD, POST
(Zusätzlich zu diesen drei gibt es noch andere, weniger häufig verwendete Methoden. Interessierte Freunde können den Artikel zum HTTP-Protokollstatus und zur Nachrichtenzusammensetzung erweitern, da das HTTP-Protokoll einfach ist.) Dadurch wird die Programmgröße des HTTP-Servers klein gemacht, sodass die Kommunikationsgeschwindigkeit sehr hoch ist. 🎜🎜🎜3. Die dritte Funktion: Flexibel
; Der Grund, warum es flexibel ist, ist, dass HTTP die Übertragung jeder Art von Datenobjekt ermöglicht; by Content-Type
markiert den Inhaltstyp und unterstützt die Übertragung mehrerer Inhaltsformate. (Starke Kompatibilität) 🎜🎜🎜4. Das vierte Merkmal: Keine Verbindung; verbindungslos bedeutet hier nicht keine Verbindung, sondern beschränkt jede Verbindung auf die Verarbeitung nur einer Anfrage. Nachdem der Server die Anfrage des Clients verarbeitet und die Antwort des Clients empfangen hat, wird die Verbindung getrennt. Durch die Übernahme einer solchen Entwurfsmethode kann Übertragungszeit eingespart werden. 🎜🎜Erweiterung: Einige Schüler denken vielleicht, dass eine Seite viele HTTP-Anfragen hat und ein solches Herstellen und Trennen der Verbindung sehr ineffizient ist. Tatsächlich lag der Grund dafür in der Anfangszeit darin, dass es seinen Ursprung im Internet hatte und der Server Hunderttausende oder Millionen von Webseitenbesuchen aus der ganzen Welt gleichzeitig verarbeiten musste. Der Datenaustausch zwischen jedem Client (oder Browser) und dem Server ist jedoch sehr zeitweise, sodass die HTTP-Übertragung stoßweise und zeitnah erfolgt. Die meisten Kanäle sind tatsächlich ohne Grund inaktiv und werden relativ verschwendet. Daher haben die Entwickler von HTTP diese Funktion absichtlich verwendet, um das Protokoll so zu gestalten, dass eine Verbindung hergestellt wird, wenn angefordert wird, und die Verbindung freigegeben wird, nachdem die Anforderung abgeschlossen ist.
Geben Sie Ressourcen so schnell wie möglich frei, um andere Clients zu bedienen. Unabhängig davon wird jeweils nur eine Anfrage verarbeitet, sodass wir auch einen weiteren Vorteil des HTTP-Protokolls erkennen können sehr spezifisch. (*^▽^*)🎜🎜🎜5. Die letzte Funktion: zustandslos bedeutet HTTP-Protokoll Es gibt keinen Speicher für Transaktionsverarbeitung
; das Fehlen eines Status bedeutet, dass, wenn für die nachfolgende Verarbeitung vorherige Informationen erforderlich sind, diese erneut übertragen werden müssen, was wahrscheinlich die Menge der pro Verbindung übertragenen Daten erhöht. Andererseits reagiert der Server schneller, wenn er keine vorherigen Informationen benötigt. 🎜🎜PS: Diese Funktionen von HTTP haben also sowohl Vor- als auch Nachteile. 🎜🎜🎜Vorteile: Der Vorteil besteht darin, den Server zu entlasten und jeder Anforderungspunkt verursacht keine unnötige Verbindungsbelegung. 🎜Nachteil: Der Nachteil besteht darin, dass bei jeder Anfrage eine große Menge an Duplicate-Content-Informationen übermittelt wird. 🎜So entstanden zwei Technologien zur Aufrechterhaltung von HTTP-Verbindungen, nämlich cookie
und session
. 🎜 HTTP-Anfrage und -Antwort🎜🎜Jetzt wissen wir, dass das HTTP-Protokoll ein Anfrage- und Antwortmodus ist, also lernen wir etwas über HTTP-Anfragen und -Antworten. Beginnen wir mit HTTP Bitte um Einigung. 🎜Anfrage
ist ein an die Schnittstelle gesendetes Datenobjekt, einschließlich der Adresse der Schnittstelle (auch bekannt als URL
), der angefordert wird Methoden (Abrufen, Posten ...), Parameter, Anforderungsheader (Header), Cookies, Daten usw. Siehe das Bild unten: 🎜🎜🎜🎜🎜Der Inhalt der Nachricht im Bild oben ist die typische Post- und Get-Request-Nachricht des HTTP-Protokolls (Ignorieren Sie den Anforderungstext der Get-Request-Nachricht, das habe ich mir ausgedacht
.) :忽略get请求报文的请求体,那是我瞎编的
。):
1、第一行就是请求行,包含有请求方法、请求URI、HTTP协议及版本(与第二行的 host属性 相结合形成了完整的 请求URL )
2、中间的部分就是报文头,包含有若干个属性;格式就是图中的
属性名:属性值
这样的格式。服务端根据报文头来获取客户端的信息。3、最下面的部分就是报文体,报文体与报文头之间必须有一个空行。在类似图中这样一个
post 请求
里面将页面表单里的组件值通过name=admin&passwd=123456
这样类似的键值对的格式编码形成这样的格式化串,承载多个请求参数的数据。(不仅仅是报文体可以传输数据,请求的 URL 在get 请求方法
的时候也是支持传递参数的。)
在这里可以看出主要的信息是通过请求的方法、url、与报文的主体来进行传递的。这也是 HTTP 的特征之一,简单快速,同时也会发现报文头里也包含有很多种信息,这些做一个了解即可。参考 HTTP协议状态及报文组成 文末的请求头报文。
熟悉了 HTTP 的请求,再来看一下响应。见下图:
可以从响应报文的样式看出,与请求的报文比较相像,他也分为三个部分:请求行对应响应行、请求头对应响应头、请求体对应着响应体。
- 1、响应行分为两部分:报文协议版本及响应状态码。
- 2、响应头也分为服务器类型、相应数据类型响应时间等多个参数。
- 3、响应体就是我们真正想要的干货,就是请求的最终返回内容。主要针对这个内容进行解析,比如说请求的是一个页面,这个时候请求的返回就是一个比较大的
HTML
。
更多内容参考 HTTP协议状态及报文组成 一文的 HTTP请求方法
。
GET方法
用来请求访问已被 URI
识别的资源,指定的资源经服务器端解析后返回响应内容。(见下图)
POST方法
与 GET方法
功能类似,一般用来传输实体的主体;主要的目的不是为了获取响应主体的内容,是向 WEB服务器提供表单数据,尤其是大批量的数据
。
POST方法
其实是克服了 GET方法
的一些缺点,通过 POST
请求,数据就不是作为一个 URL 请求的一部分了,而是作为标准数据的格式来传递给 WEB服务器
这也就克服了 GET方法
🎜Die wichtigsten Punkte finden Sie hier. Die Informationen wird über die Anforderungsmethode, die URL und den Nachrichtentext weitergeleitet. Dies ist auch eine der Eigenschaften von HTTP. Gleichzeitig werden Sie feststellen, dass der Nachrichtenheader auch viele Informationen enthält. Informationen zum HTTP-Protokollstatus und zur Nachrichtenzusammensetzung finden Sie in der Anforderungsheadernachricht am Ende. 🎜
- 1. Die erste Zeile ist die Anforderungszeile, einschließlich der Anforderungsmethode, des Anforderungs-URI, des HTTP-Protokolls und der Version (kombiniert mit dem Host-Attribut in der zweiten Zeile, um a zu bilden vollständige Anforderungs-URL)
2. Der mittlere Teil ist der Nachrichtenheader, der mehrere Attribute enthält; das Format ist der
Attributname:Attributwert
in der Abbildung. Der Server erhält Clientinformationen basierend auf dem Nachrichtenheader.- 3. Der untere Teil ist der Nachrichtentext. Zwischen dem Nachrichtentext und dem Nachrichtenkopf muss eine Leerzeile stehen. In einer
Post-Anfrage
wie der in der Abbildung werden die Komponentenwerte im Seitenformular in einem ähnlichen Schlüssel-Wert-Paarformat wiename=admin&passwd=123456
codiert um dieses Format zu bilden, das Daten mehrerer Anforderungsparameter enthält. (Nicht nur der Nachrichtentext kann Daten übertragen, die angeforderte URL unterstützt auch die Übergabe von Parametern beiget request method
.)
entspricht der Antwortzeile, der Anforderungsheader entspricht dem Antwortheader und der Anforderungstext an den Antworttext.
🎜🎜
- 1. Die Antwortzeile ist in zwei Teile unterteilt: Nachrichtenprotokollversion und Antwortstatuscode.
- 2. Der Antwortheader ist auch in mehrere Parameter wie Servertyp, entsprechende Datentyp-Antwortzeit usw. unterteilt.
- 3. Der Antworttext ist das, was wir wirklich wollen, nämlich den endgültigen Rückgabeinhalt der Anfrage. Dieser Inhalt wird hauptsächlich analysiert. Wenn beispielsweise eine Seite angefordert wird, ist die von der Anforderung zurückgegebene Antwort ein relativ großes
HTML
.
HTTP-Anfragemethode
im Artikel HTTP-Protokollstatus und Nachrichtenzusammensetzung. 🎜GET-Methode
wird verwendet, um Zugriff auf Ressourcen anzufordern, die durch URI
identifiziert wurden. Die angegebene Ressource wird vom Server analysiert und gibt den Antwortinhalt zurück. (Siehe Bild unten) 🎜🎜🎜🎜🎜POST-Methode
hat ähnliche Funktionen wie die GET-Methode
und wird im Allgemeinen zum Übertragen des Hauptteils der Entität verwendet Inhalt des Antworttextes, aber Bereitstellung von Formulardaten an den WEB-Server, insbesondere große Datenmengen
. 🎜🎜POST-Methode
überwindet tatsächlich einige Mängel der GET-Methode
. Durch die POST
-Anfrage sind die Daten nicht Teil einer URL-Anfrage wird als Standarddatenformat an den WEB-Server
übergeben. Dadurch werden die Nachteile der GET-Methode
, dass die Daten nicht vertraulich behandelt werden können und die Datenmenge begrenzt ist, überwunden. 🎜🎜🎜🎜🎜🎜🎜Das Folgende ist eine Einführung in einige weniger häufig verwendete Methoden. 🎜
- Die vom Client an den Server übertragenen Daten ersetzen den Inhalt des angegebenen Dokuments.
- Der größte Unterschied zwischen der PUT-Methode und der POST-Methode besteht darin, dass PUT idempotent ist, während POST nicht idempotent ist. Daher verwenden wir häufiger die
PUT-Methode, um Ressourcen zu übertragen.
PUT方法用作传输资源。
开启 PUT方法 需要控制权限,否则会造成一定的安全隐患,比如向服务器传输带有恶意 payload 的攻击脚本。
HEAD方法
几乎与GET
方法相同,只不过HEAD方法只请求消息报文头,返回的响应中没有具体的内容,用于获取报头。
- 请求服务器删除指定的资源,也就是删除文件。(一般服务器会控制此方法的权限,否则会造成重大的安全漏洞。)
- 用来查询针对请求的 URI 指定的资源支持的方法,就是询问
请求的URL能够支持什么方法
Die Aktivierung der PUT-Methode erfordert die Kontrolle der Berechtigungen, andernfalls birgt sie bestimmte Sicherheitsrisiken, wie z. B. die Übertragung von Angriffsskripten mit bösartigen Payloads an den Server.
HEAD-Methode
HEAD-Methode
ist fast dasselbe wie die GET
-Methode, außer dass die HEAD-Methode nur den Nachrichtenkopf anfordert und gibt die Antwort zurück. Es gibt keinen spezifischen Inhalt in , der zum Abrufen des Headers verwendet wird. DELETE-Methode
- fordert den Server auf, die angegebene Ressource zu löschen, also die Datei zu löschen. (Im Allgemeinen kontrolliert der Server die Berechtigungen dieser Methode, andernfalls kommt es zu erheblichen Sicherheitslücken.)
- wird verwendet, um die Methode abzufragen, die von der durch den angeforderten URI angegebenen Ressource unterstützt wird um die
-Anfrage zu stellen. Welche Methoden kann die URL unterstützen?
.
Diese Methode wird in der Praxis selten verwendet. Im Sicherheitsbereich wird sie häufig von Angreifern und Penetrationstestingenieuren zum Sammeln von Informationen verwendet. Die
TRACE-Methode
Detaillierte Erläuterung des HTTP-Statuscodes | HTTP-Statuscode |
---|---|
200 – Die Anfrage war erfolgreich. | |
404 – Die angeforderte Ressource (Webseite usw.) wurde nicht übertragen vorhanden | 500 - Interner Serverfehler |
HTTP-Statuscode-Klassifizierung | |
Beschreibung | |
1** | Information: Der Server hat die Anfrage erhalten und der Anforderer muss fortfahren Führen Sie den Vorgang aus Fehler, die Anfrage enthielt einen Syntaxfehler oder die Anfrage konnte nicht abgeschlossen werden |
Statuscode |
Englischer Name | Chinesische Beschreibung |
---|---|---|
100 | Weiter | Weiter. Der Client sollte seine Anfrage |
101 | Switching Protocols | Switching Protocols fortsetzen. Der Server wechselt die Protokolle basierend auf der Anfrage des Clients. Sie können nur zu einem fortgeschritteneren Protokoll wechseln, zum Beispiel zu einer neuen Version des HTTP-Protokolls |
200 | OK | Die Anfrage ist erfolgreich. Wird im Allgemeinen für GET- und POST-Anfragen verwendet |
201 | Erstellt | wurde erstellt. Erfolgreich angefordert und eine neue Ressource erstellt |
202 | Akzeptiert | Akzeptiert. Die Anfrage wurde angenommen, aber die Bearbeitung wurde noch nicht abgeschlossen |
203 | Nicht verbindliche Informationen | Nicht autorisierte Informationen. Die Anfrage war erfolgreich. Die zurückgegebenen Metainformationen befinden sich jedoch nicht auf dem Originalserver, sondern in einer Kopie |
204 | Kein Inhalt | Kein Inhalt. Der Server hat die Verarbeitung erfolgreich durchgeführt, es wurde jedoch kein Inhalt zurückgegeben. Stellt sicher, dass der Browser weiterhin das aktuelle Dokument anzeigt, ohne die Webseite zu aktualisieren |
205 | Inhalt zurücksetzen | Inhalt zurücksetzen. Die Serververarbeitung ist erfolgreich und das Benutzerterminal (z. B. Browser) sollte die Dokumentansicht zurücksetzen. Mit diesem Rückgabecode können Sie die Formularfelder des Browsers löschen |
206 | Teilinhalt | Teilinhalt. Der Server hat einen Teil der GET-Anfrage erfolgreich verarbeitet |
300 | Multiple Choices | Multiple Choices. Die angeforderte Ressource kann mehrere Standorte umfassen, und dementsprechend kann eine Liste mit Ressourcenmerkmalen und -adressen zurückgegeben werden , damit das Benutzerterminal (z. B. Browser) |
301 | Permanent verschoben | Permanent verschoben auswählen kann. Die angeforderte Ressource wurde dauerhaft auf den neuen URI verschoben, die Rückgabeinformationen enthalten den neuen URI und der Browser wird automatisch auf den neuen URI umgeleitet. Alle künftigen neuen Anfragen sollten den neuen URI anstelle von |
Found | Temporary move verwenden. Ähnlich wie 301. Die Ressource wird jedoch nur vorübergehend verschoben. Der Client sollte weiterhin den ursprünglichen URI | |
Siehe Andere | verwenden, um andere Adressen anzuzeigen. Ähnlich wie 301. Verwenden Sie GET- und POST-Anfragen, um | |
Not Modified | Unmodified anzuzeigen. Die angeforderte Ressource wurde nicht geändert. Wenn der Server diesen Statuscode zurückgibt, wird keine Ressource zurückgegeben. Normalerweise | Ressourcen, auf die zugegriffen wird, zwischenspeichern, indem sie einen Header bereitstellen, der angibt, dass der Client nur Ressourcen zurückgeben möchte, die nach einem bestimmten Datum geändert wurden |
305 | Proxy verwenden | Proxy verwenden |
306 | Nicht verwendet | |
307 | Temporäre Umleitung | |
401 | Unautorisiert | |
402 | Zahlung erforderlich | |
403 | Verboten | |
404 | Nicht gefunden 🎜Der Server kann die Ressource (Webseite) gemäß der Anfrage des Clients nicht finden. Mit diesem Code können Website-Designer 🎜Legen Sie eine personalisierte Seite für „Die von Ihnen angeforderte Ressource kann nicht gefunden“ fest |
|
405 | Methode nicht zulässig | Die Methode in der Clientanforderung ist verboten |
406 | Nicht akzeptabel | Der Server kann nicht basiert werden auf der Client-Anfrage Inhaltseigenschaften, um die Anfrage abzuschließen |
407 | Proxy-Authentifizierung erforderlich | Die Anfrage erfordert eine Proxy-Authentifizierung, ähnlich wie 401, aber der Anforderer sollte den Proxy zur Autorisierung verwenden |
408 | Anfragezeit -out | server Die Wartezeit für die vom Client gesendete Anfrage ist zu lang, Timeout |
409 | Konflikt | Der Server gibt diesen Code möglicherweise zurück, wenn die PUT-Anfrage des Clients abgeschlossen wird. Bei der Verarbeitung durch den Server ist ein Konflikt aufgetreten die Anfrage |
410 | Gone | Die vom Client angeforderte Ressource existiert nicht mehr. 410 unterscheidet sich von 404. Wenn die Ressource zuvor dauerhaft gelöscht wurde, können Sie den 410-Code verwenden. Website-Designer können den neuen Speicherort der Ressource über den 301-Code angeben | Vorbedingung fehlgeschlagen
413 | Anforderungsentität zu groß | |
415 | 417. Erwartung fehlgeschlagen unterstützen Sie den Antrag , und kann die Anfrage nicht abschließen | |
502 | Bad Gateway | Der Server, der als Gateway oder Proxy fungiert, hat eine ungültige Anfrage vom Remote-Server erhalten |
Dienst nicht verfügbar | Aufgrund von Überlastung oder Systemwartung , kann der Server die Anfrage des Clients vorübergehend nicht verarbeiten. Die Länge der Verzögerung kann in den Retry-After-Header-Informationen des Servers enthalten sein Zeit | |
HTTP-Version nicht unterstützt | Der Server unterstützt die angeforderte HTTP-Protokollversion nicht und kann die Verarbeitung nicht abschließen | |
Empfohlenes Lernen: | Python-Video-Tutorial
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des http-Protokolls, der wesentlichen Grundlage für automatisierte Tests von Python-Schnittstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!