ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTP协议

2019-07-08 15:56:43  阅读:208  来源: 互联网

标签:协议 HTTP 请求 get book w1 return


HTTP 协议

Table of Contents

1 HTTP

  • 基于 "请求" -> "响应" 机制的
  • 无状态的(服务器内心OS: 我不知道你是谁,你跟上一个请求是不是同一个,我真的不知道,我也不屑于知道。有什么好处?)
  • 明文传输的,基于文本的,不安全
  • 基于 TCP/IP 协议,OSI,网卡

事情的本质就是:

  1. 客户端,要发送某些数据到服务器 (request/parameter)
  2. 服务器,要发送某些数据到客户端 (response/html)

客户端请求,需要输入 url:

scrot_2019-07-05_03-23-47.png 最主要的是,定义数据的传输格式(http 的报文):

scrot_2019-07-05_03-30-11.pngscrot_2019-07-05_03-33-12.png

2 HTTP头部 (header)

请求头部:

  • User-Agent,使用的是什么浏览器
  • Host,使用哪个主机名进行的访问
  • Accept,我需要的是什么类型的数据,接受
  • Cache-Control,缓存的控制策略
  • Cookie

响应头部:

  • Content-Type,我返回的是什么类型的数据
  • Date
// 限制访问的 IP 地址
String host = req.getHeader("Host");
if (host != null && host.equals("127.0.0.1:8888")) {
    out.println("你不能直接使用 IP 地址去访问。");
    return;
}

// 限制访问的浏览器
// - 合理的变量名
// - 使用合理的 api
// - 空指针异常
// - 学会逻辑的抽离、封装
// - 写完代码,至少要验证一下正确性,即简单的测试
if (isiebrowser(req.getheader("user-agent"))) {
    out.println("不能使用ie浏览器!");
    return;
}

private boolean isiebrowser (string useragent) {
    if (useragent != null) {
        return useragent.contains("msie") || useragent.contains("trident");
    }
    return false;
}

3 请求方法 (methods)

带有一定的语义:

  • get,获取数据
  • post,更新数据
  • put,新增数据
  • delete,删除数据

比如,有一个 url: http://localhost:8888/w1/book

get    /w1/book  # 获取这本书的内容
post   /w1/book  # 用来更新某本书的内容
delete /w1/book  # 删除某本书
put    /w1/book  # 新增一本书

3.1 get

下面几种,进行的就是 get 请求:

  1. 在浏览器的地址栏中,输入 url 后,敲入回车
  2. 网页中的超链接 <a href="/kkkk.html">我是一个链接</a>
  3. 借助 <form> 表单,如果 method 为空或者为 get,那么默认就是进行一个 get 请求

携带的数据,叫参数(parameter)。

在 get 请求中,因为携带的数据比较少,所以,它推荐的方式是:

http://localhost:8888/w1/hhh?name=tom&age=18&city=zhuhai

3.2 post

下面几种,进行的就是 post 请求:

  1. 借助 <form method="post" action="/w1/bbb">

4 状态返回码 (status code)

常用返回码:

  • 200
  • 301
  • 404, Not Found, 没有找到
  • 500, Internal Server Error,内部的服务器错误

标签:协议,HTTP,请求,get,book,w1,return
来源: https://www.cnblogs.com/LixiaoFeng1650062546/p/11151665.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有