Cet article présente principalement des informations pertinentes sur l'introduction détaillée des protocoles Java et Http. Voici des exemples pour vous aider à apprendre et à comprendre cette partie du contenu. Les amis dans le besoin peuvent se référer à
Java. et Http Introduction détaillée du protocole
Introduction , souvent basé sur la méthode de connexion TCP. Les principales fonctionnalités du protocole HTTP sont : 1. Prend en charge le mode client/serveur.
2. Simple et rapide : Lorsqu'un client demande un service au serveur, il lui suffit d'envoyer la méthode et le chemin de la demande. Le protocole HTTP étant simple, la vitesse de communication est très rapide. 3. Flexible : HTTP permet la transmission de tout type d'objet de données. Les types sont marqués par Content-Type.
4. Aucune connexion : c'est-à-dire que chaque connexion ne traite qu'une seule demande. Après avoir traité la demande du client et reçu la réponse du client, la connexion est déconnectée. Cette méthode permet de gagner du temps de transmission.
5. Sans état : Sans état signifie que le protocole n'a aucune capacité de mémoire pour le traitement des transactions.
La méthode de connexion par défaut du protocole http1.0 est une connexion non persistante, et la méthode de connexion par défaut de HTTP1.1 est une connexion persistante.
Connexion non persistante
: Chaque fois que le serveur envoie un objet, la connexion TCP correspondante est fermée, ce qui signifie que chaque connexion ne dure pas assez longtemps pour être utilisée pour transmettre d'autres objets. Chaque connexion TCP n'est utilisée que pour transmettre un message de requête et un message de réponse.Connexion persistante
: Le serveur maintient la connexion TCP ouverte après l'envoi d'une réponse. Les requêtes et réponses ultérieures entre la même paire client/serveur peuvent être envoyées via cette connexion. Le mode par défaut de HTTP/1.1 utilise des connexions persistantes en pipeline.1. Demande d'explication détaillée du protocole HTTP
Voici les trois parties de la requête http :
//请求行 POST /reg.jsp HTTP/ (CRLF) //消息报头 Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF) Accept-Language:zh-cn (CRLF) Accept-Encoding:gzip,deflate (CRLF) If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF) If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF) User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF) Host:www.guet.edu.cn (CRLF) Connection:Keep-Alive (CRLF) (CRLF) //请求正文 user=jeffrey&pwd=1234
La ligne de requête commence par un symbole de méthode, séparé par des espaces, suivi de l'URI demandé et de la version du protocole, au format suivant :
Method Request-URI HTTP-Version CRLFOù Method représente la méthode de requête (telle que POST, GET, PUT, DELETE, etc.) ; Request-URI est un identifiant de ressource uniforme ; HTTP-Version représente la version du protocole HTTP demandée représente le retour chariot et le saut de ligne ; .
2. Chapitre Réponse Explication détaillée du protocole HTTP
La réponse HTTP est également composée de trois parties, à savoir :
//状态行 HTTP/1.1 200 OK (CRLF) //消息报头 Cache-Control: private, max-age=30 Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Expires: Mon, 25 May 2009 03:20:33 GMT Last-Modified: Mon, 25 May 2009 03:20:03 GMT Vary: Accept-Encoding Server: Microsoft-IIS/7.0 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET Date: Mon, 25 May 2009 03:20:02 GMT Content-Length: 12173 //响应正文 略
Le format de la ligne d'état est le suivant :
Parmi eux, HTTP-Version représente la version du protocole HTTP du serveur ; Status-Code représente le code d'état de réponse renvoyé par le serveur ; Reason-Phrase représente la description textuelle du code d'état.
HTTP-Version Status-Code Reason-Phrase CRLFCodes d'état courants, descriptions d'état, instructions :
200 OK //La demande du client est réussie
400 Bad Request //La demande du client contient une erreur de syntaxe et ne peut pas être traité par le serveur Compris
403 Interdit //Le serveur a reçu la demande, mais a refusé de fournir le service
404 Not Found // La ressource demandée n'existe pas, par exemple : une mauvaise URL a été saisie
500 Internal Server Error //Une erreur inattendue s'est produite sur le serveur
503 Server Unavailable //Le serveur est actuellement incapable de traiter la demande du client et peut revenir à la normale après un certain temps
3. Explication détaillée des en-têtes de message du protocole HTTP
Les messages HTTP sont constitués du client vers -demandes du serveur et réponses serveur-client. Les messages de demande et les messages de réponse se composent d'une ligne de début (pour un message de demande, la ligne de début est la ligne de demande ; pour un message de réponse, la ligne de début est la ligne d'état), d'un en-tête de message (facultatif), d'une ligne vide (uniquement la ligne avec CRLF) et la composition du corps du message (facultatif).
Les en-têtes de message HTTP incluent les en-têtes ordinaires, les en-têtes de requête, les en-têtes de réponse et les en-têtes d'entité. Chaque champ d'en-tête est composé de nom + ":" + espace + valeur. Le nom du champ d'en-tête du message est indépendant de la casse.1. En-tête de requête
L'en-tête de requête permet au client de transmettre les informations supplémentaires demandées et les propres informations du client au serveur.
En-têtes de requête couramment utilisés
Accept请求报头域用于指定客户端接受哪些类型的信息。
Accept-Charset请求报头域用于指定客户端接受的字符集。
Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。
Authorization请求报头域主要用于证明客户端有权查看某个资源。
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。
2、响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
常用的响应报头
Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
Server响应报头域包含了服务器用来处理请求的软件信息
3. 实体报头
请求和响应消息都可以传送一个实体。
常用的实体报头
Content-Encoding指示已经被应用到实体正文的附加内容的编码。
Content-Language实体报头域描述了资源所用的自然语言。
Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
Last-Modified实体报头域用于指示资源的最后修改日期和时间。
Expires实体报头域给出响应过期的日期和时间。
四、补充
1、HTTP协议Content Lenth限制漏洞导致拒绝服务攻击
使用POST方法时,可以设置ContentLenth来定义需要传送的数据长度,例如ContentLenth:999999999,在传送完成前,内 存不会释放,攻击者可以利用这个缺陷,连续向WEB服务器发送垃圾数据直至WEB服务器内存耗尽。这种攻击方法基本不会留下痕迹。
2、为了提高用户使用浏览器时的性能,现代浏览器还支持并发的访问方式,浏览一个网页时同时建立多个连接,以迅速获得一个网页上的多个图标,这样能更快速完成整个网页的传输。HTTP1.1中提供了这种持续连接的方式,而下一代HTTP协议:HTTP-NG更增加了有关会话控制、丰富的内容协商等方式的支持,来提供更高效率的连接。
五.Java利用HTTP协议实现联网和下载
Url的请求连接(Get方式)
String currentUrl=“http://www.myWeb.com/login.jsp?userName='Devin'&passWord='mypassword'”; //URL ?后面的内容为HTTP请求的正文 URL url = new URL(currentUrl); HttpURLConnection httpurlconnection = url.openConnection(); //下面的设置对应HTTP请求中的消息报头 httpurlconnection.setRequestProperty("User-Agent",CommonValues.User_Agent); httpurlconnection.setRequestProperty("Accept",CommonValues.Accept); httpurlconnection.setRequestProperty("Accept-Charset",CommonValues.Accept_Charset); httpurlconnection.setRequestProperty("Accept-Language",CommonValues.Accept_Language); httpurlconnection.setRequestProperty("Connection",CommonValues.Connection); httpurlconnection.setRequestProperty("Keep-Alive",CommonValues.Keep_Alive); httpurlconnection.setConnectTimeout(CommonValues.ConnectionTimeOut); httpurlconnection.setReadTimeout(CommonValues.ReadTimeOut); httpurlconnection.connect(); int responsecode = httpurlconnection.getResponseCode(); if(responsecode == HttpURLConnection.HTTP_OK) //对应HTTP响应中状态行的响应码 { //操作请求流,这里对应HTTP响应中的响应正文 } if (httpurlconnection != null) { httpurlconnection.disconnect(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!