http请求

浏览器缓存控制三种方式(Expires、Last-Modified、Etag)

我只是一个虾纸丫 提交于 2019-12-15 02:27:12
当请求一个页面时,如果浏览器使用本地缓存,因此我们经常会看到一个HTTP请求为304状态。或者显示200状态,在chrome下标注是from cache,在火狐下会标注BFCache; 我们希望在服务器端更新了静态文件(如css、js、图片),能够在客户端得到及时的更新,但又不想让浏览器每次请求都从服务器端获取静态资源。那么就需要了解一些下面的知识: Last-Modified / If-Modified-Since 当浏览器第一次请求一个url时,服务器端的返回状态码为200,同时HTTP响应头会有一个Last-Modified标记着文件在服务器端最后被修改的时间。 浏览器第二次请求上次请求过的url时,浏览器会在HTTP请求头添加一个If-Modified-Since的标记,用来询问服务器该时间之后文件是否被修改过。 如果服务器端的资源没有变化,则自动返回304状态,使用浏览器缓存,从而保证了浏览器不会重复从服务器端获取资源,也保证了服务器有变化是,客户端能够及时得到最新的资源。 Etag / If-None-Match 当浏览器第一次请求一个url时,服务器端的返回状态码为200,同时HTTP响应头会有一个Etag,存放着服务器端生成的一个序列值。 浏览器第二次请求上次请求过的url时,浏览器会在HTTP请求头添加一个If-None-Match的标记

GET和POST两种基本请求的区别

烂漫一生 提交于 2019-12-14 11:28:13
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻轻松松的给出了一个“标准答案”: GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。 GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 GET请求在URL中传送的参数是有长度限制的,而POST么有。 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。 GET参数通过URL传递,POST放在Request body中。 (本标准答案参考自w3schools) “很遗憾,这不是我们要的回答!” 请告诉我真相。。。 如果我告诉你GET和POST本质上没有区别你信吗? 让我们扒下GET和POST的外衣

18.DjangoRestFramework学习一之restful规范、APIview、解析器组件、Postman等

▼魔方 西西 提交于 2019-12-14 11:09:29
一 预备知识   预备知识:django的CBV和FBV     CBV(class based view):多用,简单回顾一下     FBV(function based view):   CBV模式的简单操作:来个登陆页面吧   login.html文件内容如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="{% url 'login' %}" method="post"> {% csrf_token %} 用户名: <input type="text" name="username"> 密码: <input type="text" name="password"> <input type="submit"> </form> </body> </html>   url.py内容如下 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/',

Python:urllib.request的5个基本程序

爷,独闯天下 提交于 2019-12-14 09:51:16
Python:urllib.request的5个基本程序 一、基础版 二、异常处理版 三、User-Agent版 四、IP代理版 五、Cookie版 六、总结 一、基础版 from urllib import request # 读取主页源码 url = "http://www.baidu.com/" # url = "https://www.baidu.com/" html = request.urlopen(url) code = html.read().decode("UTF_8") file = open("1.html", "w", encoding='UTF-8') file.write(str(code)) file.close print(code) http请求方法 描述 GET 向指定url发送请求,返回网页的html代码 POST 向指定url提交数据,由服务端进行处理并返回结果。 http请求 / 响应过程 操作 1 客户端(浏览器)解析URL地址,将域名转换成IP 2 客户端(浏览器)与服务端(服务器)建立TCP/IP连接 3 客户端(浏览器)发送http请求,请求报文包括请求行(请求方式、URL、协议版本)、请求头部、空行和请求数据 4 服务端(服务器)响应请求返回数据,响应报文包括状态行、消息报头、空行和响应正文 5 服务端(服务器)释放TCP连接 6

Python爬虫入门四之Urllib库的高级用法

人走茶凉 提交于 2019-12-14 08:03:06
设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性。 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次请求之后,网页的骨架和肌肉全了,整个网页的效果也就出来了。 拆分这些请求,我们只看一第一个请求,你可以看到,有个Request URL,还有headers,下面便是response,图片显示得不全,小伙伴们可以亲身实验一下。那么这个头中包含了许许多多是信息,有文件编码啦,压缩方式啦,请求的agent啦等等。 其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent,例如下面的例子,这个例子只是说明了怎样设置的headers,小伙伴们看一下设置格式就好。 import urllib import urllib2 url = 'http://www.server.com/login' user_agent = 'Mozilla/4.0

HTTP详细介绍

ε祈祈猫儿з 提交于 2019-12-14 05:56:56
一.概述 HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接,整个工作流程基本是由客户端(client)向服务端(server)发送一个http请求,向server端请求需要的资源,到server端收到客户端的请求后,根据请求做出相应的动作访问服务器资源,然后通过HTTP相应将结果返回给client端。 HTTP工作流程 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器; 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器; 释放TCP连接; 浏览器显示html文本; http版本 0.9版本:仅支持html页面(已被淘汰); 1.0版本: (1)引入MIME(多用途互联网邮件扩展)机制,引入这个机制之后就可以发送多媒体信息; (2)引入keep-alive机制,支持持久链接的功能(但这个keep-alive原理是在首部添加了某个字段而形成,并非原生就支持此功能); (3)引入支持缓存页面功能; 1.1版本:1.0版本的升级,支持更多的请求连接方式

HTTP请求总结分享

孤街醉人 提交于 2019-12-14 04:01:03
文章目录 1.HTTP请求简介 1.1 什么是HTTP请求 1.2 HTTP请求的特点 1.3 HTTP的请求方式 1.4 HTTP请求报文和响应报文 1.4.1 HTTP请求报文 1.4.2 HTTP响应报文 2.GET请求和POST请求的区别 3.三次握手和四次挥手 3.1 TCP报文字段解析 3.2 三次握手 3.2.1 三次握手模拟图 3.2.2 三次握手流程 3.2.3 为什么是三次 3.2.4 建立连接后故障处理机制 3.3 四次挥手 3.3.1 四次挥手模拟图 3.2.2 四次挥手流程 3.3.3 断开连接为什么要四次挥手 3.3.4 最大报文段生存时间2MSL用途 4.HTTP常见状态码 1.HTTP请求简介 1.1 什么是HTTP请求 通俗来讲,他就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照Http协议进行,否则无法连接。 其实,关键字就是三个:tcp/ip、一种网络应用层协议、超文本传输协议。 1.2 HTTP请求的特点 支持客户/服务器模式 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单

【基础】RPC、JSON-RPC和HTTP区别

不想你离开。 提交于 2019-12-14 01:10:53
一. RPC RPC是什么 RPC(Remote Procedure Call)指的是远程过程调用,简单的说,RPC就是从一台机器上通过参数传递的方式调用另一台机器上的一个函数或方法并得到响应结果。 RPC会隐藏底层的通讯细节。 RPC是一个请求响应模型,客户端发起请求,服务器返回响应。 RPC在使用形式上像调用本地函数一样去调用远程的函数。 常见的RPC框架 dubbo: 阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 motan: 新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。 rpcx: Go语言生态圈的Dubbo,比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。 gRPC: Google开发的高性能、通用的开源RPC框架,主要面向移动应用开发并基于HTTP2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 thrift: Apache的一个跨语言的高性能的服务框架 JSON-RPC: JSON

HTTP

﹥>﹥吖頭↗ 提交于 2019-12-12 02:44:25
概念: 超文本传输协议。 传输协议: 定义了,客户端和服务器端通信时,发送数据的格式 特点 1,基于TCP/IP的高级协议 2,默认端口号:80 3,基于请求响应模型的,一次请求对应一次相应 4,无状态的,每次请求直接相互独立,不能交互数据 请求消息数据格式 1,请求行 请求方式 请求URL 请求的协议/版本 GET: 请求参数在请求行中,在URL后。 请求的URL长度是有限制的。 不太安全 POST: 请求参数在请求体中。 请求的URL长度是没有限制的。 相对安全。 2,请求头 客户端浏览器告诉服务器一些信息。 常见的请求头: User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息,可以在服务器端获取该头的信息,解决浏览器兼容性问题。 Referer:告诉服务器,当前请求哪里来。 防盗链。 统计工作。 3,请求空行 空行,接受用于分割POST请求头,和请求体的 4,请求体 封装POST请求消息的请全参数的。 相应消息数据格式 来源: CSDN 作者: 6k不多吧 链接: https://blog.csdn.net/weixin_45371966/article/details/103495916

封装http请求

こ雲淡風輕ζ 提交于 2019-12-11 20:32:50
let dom = "http://192.168.28.206:8027" ; function thenCallBack ( res , then , cat ) { console . log ( res ) ; if ( res . data . code == 200 ) { then . call ( this , res ) ; } else { this . $message ( { message : res . data . msg , type : "error" } ) ; cat . call ( this , res ) ; } } function post ( url , data , then , cat ) { if ( data instanceof Function ) { cat = then ; then = data ; data = undefined ; } if ( ! cat ) { cat = res => { } ; } var url = dom + url ; this . $axios . post ( url , data ) . then ( res => { thenCallBack . call ( this , res , then , cat ) ; } ) } function get ( url ,