您现在的位置是:主页 > news > tiktok官方网站入口/友情链接系统

tiktok官方网站入口/友情链接系统

admin2025/5/2 12:57:20news

简介tiktok官方网站入口,友情链接系统,网络营销渠道有哪几种,网站建设的公司地址HTTP请求 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般…

tiktok官方网站入口,友情链接系统,网络营销渠道有哪几种,网站建设的公司地址HTTP请求 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般…

HTTP请求

  • 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
    •   一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般作为请求体来发给服务器),如下所示 :




HTTP请求的细节——请求行

  • 请求行中的GET称之为请求方式,请求方式有:
    • POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
    • 常用的有: GET、 POST
    • 用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
  • 不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:
    • 如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
    • GET /mail/1.html?name=abc&password=xyzHTTP/1.1
    • GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
    • 如请求方式为POST方式,则可以在请求体中向服务器发送数据,Post方式的特点:传送的数据量无限制。


HTTP请求的细节——消息头

  • 用于HTTP请求中的常用请求消息头
    • Accept:text/html,image/*    浏览器通过这个头告诉服务器,它所支持的数据类型
    • Accept-Charset: ISO-8859-1    浏览器通过这个头告诉服务器,它支持哪种字符集
    • Accept-Encoding: gzip,compress    浏览器通过这个头告诉服务器,支持的压缩格式
    • Accept-Language: en-us,zh-cn     浏览器通过这个头告诉服务器,它的语言环境
    • Host:www.it315.org:80    浏览器通过这个头告诉服务器,想访问哪台主机
    • If-Modified-Since: Tue,11 Jul 2000 18:23:51 GMT    浏览器通过这个头告诉服务器,缓存数据的时间
    • Referer:http://www.it315.org/index.jsp     浏览器通过这个头告诉服务器,客户机是哪个页面来的  防盗链
    • User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
    • Cookie
    • Connection:close/Keep-Alive     浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
    • Date: Tue,11 Jul 2000 18:23:51 GMT


HTTP响应

  • 一个HTTP响应代表服务器向客户端回送的数据,它包括:
    •  一个状态行、若干消息头、以及实体内容(回送给浏览器的响应数据) 。



HTTP响应的细节——状态行

  • 状态行
    • 格式: HTTP版本号 状态码 原因叙述<CRLF>
      • 举例:HTTP/1.1   200  OK
    • 状态码:用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
      • 常用的状态码:200(一切ok)、302(我没有,你找别人)、304(找你的缓存去吧)、404(没有找到,你敲错了地址)、500(我出错了)



HTTP响应细节——常用响应头

  • HTTP响应中的常用响应头
    • Location: http://www.it315.org/index.jsp     配合响应状态码302用的,服务器通过这个头,来告诉浏览器具体跳到哪里
    • Server:apache tomcat     服务器通过这个头,告诉浏览器我当前用的服务器的版本号
    • Content-Encoding: gzip     服务器通过这个头,告诉浏览器,我这个数据采用的是什么压缩格式
    • Content-Length: 80     服务器通过这个头,告诉浏览器回送数据的长度
    • Content-Language: zh-cn     服务器通过这个头,告诉浏览器语言环境
    • Content-Type: text/html; charset=GB2312     服务器通过这个头,告诉浏览器回送数据的类型
    • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
    • Refresh: 1;url=http://www.it315.org     服务器通过这个头,告诉浏览器定时刷新
    • Content-Disposition: attachment;filename=aaa.zip     服务器通过这个头,告诉浏览器以下载方式打开
    • Transfer-Encoding: chunked      服务器通过这个头,告诉浏览器数据是以分块方式回送的
    • Set-Cookie:SS=Q0=5Lb_nQ; path=/search    以后有专门章节会讲Cookie
    • 控制浏览器不要缓存的响应消息头,下面三个组合使用:
      • Expires: -1                               控制浏览器不要缓存
      • Cache-Control:no-cache      控制浏览器不要缓存
      • Pragma:no-cache                 控制浏览器不要缓存
    • Connection:close/Keep-Alive                    告诉浏览器,保持连接还是断开
    • Date: Tue,11 Jul 2000 18:23:51 GMT      服务器回送数据的日期

演示响应消息头:

演示一:状态码302,响应消息头Location

package cn.mengmei;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test1(request,response);}//Location: http://www.it315.org/index.jsp  配合响应状态码302用的,服务器通过这个头,来告诉浏览器具体跳到哪里//这个就是传说中的请求重定向。public void test1(HttpServletRequest request, HttpServletResponse response) {response.setStatus(302);response.setHeader("Location", "/myday04/1.html");  //服务器调用这个资源,‘/’代表webapps}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

放在WebRoot下的1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>1.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>This is my mengmei's HTML page. <br></body>
</html>
演示结果:

访问:http:localhost:8080/myday04/servlet/ServletDemo1



演示二:响应消息头Content-Encoding、Content-Length

package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test2(request,response);}//Content-Encoding: gzip   服务器通过这个头,告诉浏览器,我这个数据采用的是什么压缩格式public void test2(HttpServletRequest request, HttpServletResponse response) throws IOException {String data = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";System.out.println("原始数据大小:"+data.getBytes().length);//底层流:java.io.ByteArrayOutputStream 把数据写到字节数组里面去(内存里)   如:FileOutputStream 把数据写到文件里ByteArrayOutputStream bout = new ByteArrayOutputStream();//java.util.zip.GZIPOutputStream 压缩流,调用它的write方法,方法内部就会自动把数据压缩了然后写到底层流里面去。GZIPOutputStream gout = new GZIPOutputStream(bout);gout.write(data.getBytes());gout.close();  //只有关闭此流,它才会真正的把数据写到底层流里面去。//将压缩后的内存中的字节数组取出,复制到一个新byte数组里。byte[] g = bout.toByteArray();//把压缩数据写给浏览器response.setHeader("Content-Encoding", "gzip");response.setHeader("Content-Length", g.length+"");response.getOutputStream().write(g);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
演示结果:

访问:http:localhost:8080/myday04/servlet/ServletDemo1

  • 控制台打印:原始数据大小:1066

  • 第一次试验:数据为:String data = "abcdefghijklmnopqrstuvwxyz"; 原始数据大小为26,压缩后的数据大小为46,压缩后反而变大了?
    • 因为原始数据太小了,出不来效果。
  • 第二次试验:加大了数据量:String data = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; 原始数据大小为1066,压缩后的数据大小为57,压缩率为18%。
    • 一个网页的大小肯定不只1K。 数据越大,压缩效果越好。 电信部门向网站运营商是按出口流量收费的,你这个月出去多少数据就收多少费,所以大型网站运营商为了省钱一定要压缩数据再打出去。



演示三:响应消息头Content-Type: text/html;charset=GB2312

  • 文件 apache-tomcat-7.0.42\conf\web.xml 里面配置了各种类型的文件在Content-Type头字段里该怎么写,例如:你要发送的数据是jpg类型的,那么就在文件里Ctrl+F搜索<jpg
    • 就会搜索到:    <mime-mapping>
    •         <extension>jpg</extension>
    •          <mime-type>image/jpeg</mime-type>
    •      </mime-mapping>
  • 用红色标出的,就可以写在Content-Type头字段里。
package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test3(request,response);	}//Content-Type: text/html; charset=GB2312     服务器通过这个头,告诉浏览器回送数据的类型public void test3(HttpServletRequest request, HttpServletResponse response) throws IOException {//在文件 apache-tomcat-7.0.42\conf\web.xml 里面查类型该怎么写。response.setHeader("Content-Type", "image/jpeg");InputStream in = this.getServletContext().getResourceAsStream("/2.jpg"); //java程序调用这个资源,‘/’代表WebRootbyte[] buffer = new byte[1024];int len = 0;ServletOutputStream out = response.getOutputStream();while((len=in.read(buffer))>0){out.write(buffer,0,len);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
放在WebRoot下的图片2.jpg


演示结果:

访问:http:localhost:8080/myday04/servlet/ServletDemo1




演示四:响应消息头Refresh: 1;url=http://www.it315.org

package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test4(request,response);}//Refresh: 1;url=http://www.it315.org  服务器通过这个头,告诉浏览器定时刷新//用在聊天室,随时刷新消息public void test4(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setHeader("Refresh", "5;url=http://www.baidu.com");response.getWriter().write("abcde");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

演示结果:

访问:http:localhost:8080/myday04/servlet/ServletDemo1



演示五:响应消息头Content-Disposition: attachment;filename=aaa.zip

package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test5(request,response);}//Content-Disposition: attachment;filename=aaa.zip  服务器通过这个头,告诉浏览器以下载方式打开public void test5(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setHeader("Content-Disposition", "attachment;filename=girl.png");InputStream in = this.getServletContext().getResourceAsStream("/1.png");byte[] buffer = new byte[1024];int len = 0;ServletOutputStream out = response.getOutputStream();while((len=in.read(buffer))>0){out.write(buffer, 0, len);}}	public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

演示结果:

访问:http:localhost:8080/myday04/servlet/ServletDemo1




作业

  • 请写一篇关于HTTP协议的笔记,要求:
    • 描述清楚HTTP请求、响应的格式
    • 请求头和响应头中各个头字段的含义
  • 如果浏览器传递给WEB服务器的参数内容超过1K,应该使用那种方式发送请求消息?
  • 请描述200、302、304、404和500等响应状态码所表示的意义。
  • 请列举三种禁止浏览器缓存的头字段,并写出相应的设置值。