zoukankan      html  css  js  c++  java
  • HTTP 随笔

    浏览器发送HTTP请求主要分为三部分请求行,Response Headers(响应头信息)和Request Headers(请求头信息)。

    请求行有分为三部分:请求方法,请求路径和请求协议
    请求方法有:POST,GET,PUT,DELETE,HEAD,TRACE,OPTIONS

    例子:使用Telnet发送GET请求

    按ENTER后进入Telnet,按Ctrl+],再按ENTER打开回显功能。
    输入请求行
    GET /test.php HTTP/1.1
    Host: localhost
    然后按两次ENTER得到响应信息和响应内容

    例子:使用Telnet发送POST请求

    发送POST请求必须指明Content-Type和Content-length,输入完请求行后需空一行才能输入要提交的POST数据

    例子:使用Telnet发送HEAD请求

    HEAD请求和GET请求相似,但是HEAD请求只会返回响应头信息而不会返回响应内容

    TRACE请求方法是用于判断HTTP请求经过了多少层代理和代理服务器的信息。
    OPTIONS请求方法是返回服务器可用的请求方法

    304状态码说明
    浏览器在请求图片资源或者文件(JavaScript,CSS)资源的时候,服务器端会返回etag和Date信息,浏览器会将这些资源存放在本地。当浏览器再次请求图片资源或者文件(JavaScript,CSS)资源的时候,会将带上if-modified-since(Date内容)和if-none-match(etag内容)一起发送到服务器,服务器会比对这两个信息,如果与服务器保留的信息相同,则返回304状态码告诉浏览器从本地获取资源而不会从服务器响应返回资源。

    301,302,307状态码说明
    301(永久重定向)和302(临时重定向)是负责重定向,但是在使用301和302进行重定向的时候会丢失POST提交的数据,这时候可以使用307状态码进行重定向就能保留POST数据。

    例子:图片防盗链

    请求资源文件的时候在请求头信息中会带refer信息,服务器根据这个refer信息来判断请求发起源是否是允许的域名,如果是非允许的域名则重定向到其他页面,从而进行防盗链。(当然有时候发起请求时候可能不会带Renferer内容,这时候可以通过判断host信息来进行防盗链)

    在项目目录下新建.htaccess并写入(使用对web容器是Apache且需要开启rewrite模块)

    例子:HTTP协议与内容压缩

    在http-conf开启deflate模块(Apache服务器)
    在http-conf写入

    压缩前

    压缩后

    备注:一般情况下是不会对图片文件,视频影音文件进行压缩,只会对文本类的文件进行压缩(如:文本文件,HTML文件,JavaScript文件,样式文件等),因为文本类文件压缩效果好,而图片文件,视频影音文件的压缩效果很差,同时服务器进行压缩本身就很消耗CPU资源。

    服务器是如何知道浏览器支持哪种类型的压缩?

    浏览器在发送请求的时候会在Request Headers加入告诉服务器。服务器会根据这个判断是否要进行压缩。

    例子:comet反向AJAX

    反向AJAX的原理是当浏览器获取完Content-length长度的字节后会断开HTTP连接,而反向AJAX就是不给Content-length指定长度使得HTTP请求一直连接着。

  • 相关阅读:
    Mediawiki 子页链接无效的问题
    变量存储区:堆和栈
    《modern-php》
    HttpApplication处理对象与HttpModule处理模块
    Asp.Net构架(Http请求处理流程)
    Quartz.NET 3.0
    WebApi路由
    RESTful架构
    WCF
    TCP/IP协议
  • 原文地址:https://www.cnblogs.com/helbing/p/5608803.html
Copyright © 2011-2022 走看看