http请求

谈\"http get和post的区别\"

做~自己de王妃 提交于 2020-02-27 02:04:48
——以下内容如有各种问题,烦请指出,谢谢各位^_^—— 最基本的Java程序员面试题都有这个题 ——http get和post的区别? 不少人大学还没毕业就知道,就算不知道也会去搜,我记得我快毕业那会,简单搜出来,排在前面的大概就这么几个区别: 1、get用于获取数据,post用于提交数据 2、get提交参数追加在url后面,post参数可以通过http body提交 3、get的url会有长度上的限制,则post的数据则可以非常大 4、get提交信息明文显示在url上,不够安全,post提交的信息不会在url上显示 5、get提交可以被浏览器缓存,post不会被浏览器缓存 现在回头总结下,发现自己快毕业哪会自己真是什么都不知道啊,当时网上搜出来的这份东西就是有误的啊,国内也是各种传来传去,错误的到处 看得到,都快成标准答案了。今年5月用netty http 些服务端程序时,调接口无意发现了原来get也可以使用http body提交数据,抽空弄了下tomcat,发现也可以啊。今天整理笔记看到了这里,觉得有必要在博客上记录一下,避免后来人继续犯错。 一点一点的说 第1点:rfc2616说get方法用于获取指定uri所代表的资源,应该设计成幂等的(其他情况不变时,多次请求返回同样的结果,差不多算是只读),不过在很长一段时间内,get方法都有“写”功能,最简单的例子就是/delete

TCP和Http的区别

こ雲淡風輕ζ 提交于 2020-02-26 16:29:52
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。 1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握 手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写 了,就是服务器和客户端交互,最终确定断开) 2、HTTP连接 HTTP协议即超文本传送协议

HTTP请求过程

女生的网名这么多〃 提交于 2020-02-26 11:53:53
整个流程 域名解析 —> 与服务器建立连接 —> 发起HTTP请求 —> 服务器响应HTTP请求,浏览器得到html代码 —> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片) —> 浏览器对页面进行渲染呈现给用户 1. 域名解析 以Chrome浏览器为例: ① Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有https://www.cnblogs.com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。 注:我们怎么查看Chrome自身的缓存?可以使用 chrome://net-internals/#dns 来进行查看 ② 如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束. 注:怎么查看操作系统自身的DNS缓存,以Windows系统为例,可以在命令行下使用 ipconfig /displaydns 来进行查看 ③ 如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。 ④ 如果在hosts文件中也没有找到对应的条目

HTTP 方法:GET 对比 POST

走远了吗. 提交于 2020-02-26 08:32:54
两种最常用的http方法是:GET和POST。 什么是HTTP? 超文本传输协议(http)的设计目的是保证客户机与服务器的通信。 HTTP的工作方式是客户机与服务器之间的请求-应答协议。 web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。 两种 HTTP 请求方法:GET 和 POST 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据 1. GET 方法 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的: /test/demo_form.asp?name1=value1&name2=value2 注意:get方法传参不可以有空格!否则浏览器会对其进行编译! 有关 GET 请求的其他一些注释: GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回数据 POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1

Golang构建HTTP服务(一)--- net/http库源码笔记

混江龙づ霸主 提交于 2020-02-26 04:53:20
搭建一个简单的Go Web服务器 Go语言标准库 - net/http 在学习Go语言有一个很好的起点, Go语言官方文档 很详细,今天我们学习的Go Web服务器的搭建就需要用到Go语言官方提供的 标准库 net/http,通过http包提供了HTTP客户端和服务端的实现。同时使用这个包能很简单地对web的路由,静态文件,模版,cookie等数据进行设置和操作。如果对http概念不是太清楚的朋友可以自行google。 http包建立Web服务器 package main import ( "fmt" "net/http" "strings" "log" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) fmt.Println(r.Form["url_long"]) for k, v := range r.Form { fmt.Println("key:", k) fmt.Println("val:", strings.Join(v, "

浅谈HTTP中Get与Post的区别

限于喜欢 提交于 2020-02-26 03:49:56
浅谈HTTP中Get与Post的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。    1 .根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。   (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。   * 注意:这里安全的含义仅仅是指是非修改信息。   (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下 幂等 这个概念:    幂等 (idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。   幂等有一下几种定义:   对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs

Kong添加ip-restrication以及rate-limiting

你离开我真会死。 提交于 2020-02-26 02:55:50
rate-limiting 每分钟请求5次 参数 注释 name 在这种情况下要使用的插件的名称 rate-limiting service.id 插件定位的服务的ID。 route.id 插件定位的Route的ID。 consumer.id 插件定位的使用者的ID。 config.second半可选 开发人员每秒可以发出的HTTP请求数量。至少必须存在一个限制。 config.minute半可选 开发人员每分钟可以发出的HTTP请求数量。至少必须存在一个限制。 config.hour半可选 开发人员每小时可发出的HTTP请求数量。至少必须存在一个限制。 config.day半可选 开发人员每天可以发出的HTTP请求数量。至少必须存在一个限制。 config.month半可选 开发人员每月可发出的HTTP请求数量。至少必须存在一个限制。 测试 ip-restrication 测试 来源: 51CTO 作者: 李佳良 链接: https://blog.51cto.com/13555423/2471407

Koa1 框架

两盒软妹~` 提交于 2020-02-26 02:22:17
安装创建项目: 1.一定要全局安装(koa1.2和koa2都己经支持) npm install koa-generator -g 2. koa1 生成一个test项目,切到test目录并下载依赖 koa1创建项目 koa test cd test npm install 运行:npm start 访问:http://localhost:3000 Koa是一个类似于Express的Web开发框架,创始人也是同一个人。它的主要特点是,使用了ES6的Generator函数,进行了架构的重新设计。也就是说,Koa的原理和内部结构很像Express,但是语法和内部结构进行了升级。 官方 faq 有这样一个问题:”为什么koa不是Express 4.0?“,回答是这样的:”Koa与Express有很大差异,整个设计都是不同的,所以如果将Express 3.0按照这种写法升级到4.0,就意味着重写整个程序。所以,我们觉得创造一个新的库,是更合适的做法。“ Koa应用 一个Koa应用就是一个对象,包含了一个middleware数组,这个数组由一组Generator函数组成。这些函数负责对HTTP请求进行各种加工,比如生成缓存、指定代理、请求重定向等等。 1 var koa = require('koa'); 2 var app = koa(); 3 4 app.use(function *(){

20200218--HTTP协议

坚强是说给别人听的谎言 提交于 2020-02-25 23:59:25
一、HTTP 概念 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 HTTP 协议和TCP/IP协议族的其他众多协议相同,用户客户端和服务器之间的通信 二、HTTP发展史 1989http诞生: 最初设想:借助多文档之间相互关联形成的超文本(HypeText),连接可相互参阅WWW(万维网) 1990年http/0.9版本 HTTP 0.9版本问世 1996 http/1.0版本 1996年5月,HTTP正式作为标准被公布 1997 http/1.1版本 1997年1月公布http1.1版本,也是目前最主流的http协议版本 三、HTTP 的通信过程 (1)先建立TCP连接,三次握手过程,HTTP协议是承载在TCP上的应用层协议 (2) 浏览器封装请求消息,将封装后的HTTP请求通过网络寻址发送到具体的服务器上 (3)服务器收到请求后解封装,协议HTTP协议头中信息,根据请求方法中的资源路径找到对应的请求资源,然后将封装响应报文发送给客户端 (4)HTTP 1.0是短连接,HTTP1.1开始支持长连接 (5)请求头Connection字段:表示是否需要持久连接,(HTTP1.1默认进行持久连接)。如

1.Web介绍与HTTP基础

时光总嘲笑我的痴心妄想 提交于 2020-02-25 19:44:00
DNS : (域名系统服务协议)主要用于域名与IP地址相互转换以及控制因特网的电子邮件发送。 HTTP协议 : Hyper Text Transfer Protocol(超文本传输协议),所有的WWW文件都必须遵守这个标准,基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等) URL : Uniform Resource Location(统一资源定位符)是互联网标准资源的地址。每个文件都有一个唯一的URL URL格式: http: //www.example.com :80 /path/to/myfile? key1=value1&key2=value2 protocol domain name port uri:path to resource parameters (协议) (计算机域名) (端口号) (资源位置) (参数) 常见头部请求消息: 请求行:请求方法+URL+协议版本 eg:POST/organization/add-fav/HTTP/1.1 Accept:可接受的相应内容类型 Accept-charset:(字符集) Accept-Encoding:(编码方式) Accept-Lauguage:(语言) Host:服务器的域名 Referer:请求的来源 Cookie:(储存在用户本地终端数的数据) User-Agent