zoukankan      html  css  js  c++  java
  • Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误

    —————————————————————————————————————————
    *** 响应的数据格式 
    HTTP/1.1 200 OK 
    Server: Apache-Coyote/1.1 
    Accept-Ranges: bytes 
    ETag: W/"27-1432777730225" 
    Last-Modified: Thu, 28 May 2015 01:48:50 GMT 
    Content-Type: text/html 
    Content-Length: 27 
    Date: Thu, 28 May 2015 07:03:37 GMT
     
    * HTTP/1.0 和 HTTP/1.1区别
    ** 使用telnet命令,分别 操作这两个版本的HTTP
    *** 使用HTTP/1.0,如果做出响应立刻断开连接
    *** 使用HTTP/1.1,做出了响应之后不会立刻断开
     
     
    * http协议的请求三部分组成:
        ** 第一部分:请求行
            ** 请求行里面包含:请求方式、请求地址、http版本
        ** 第二部分:请求头
            ** 类似key-value形式,一个key可以对应一个value,也可以对应多个value
            ** 三个重要的请求头
            *** Referer:防盗链,得到当前请求的地址
     
            **** 创建两个文件夹 my  和 other
            **** 分别创建两个页面 my.html  other.html
            ***** 只能是my文件夹里面的文件才可以访问
            ***** 只有my文件夹里面的文件才可以访问servlet
     
            *** User-Agent:获取当前请求的浏览器的信息
     
            *** If-Modified-Since:经常和响应里面Last-Modified一起使用,用于查询本地缓存
     
        ** 第三部分:请求体
            ** 通过post提交的数据 user=lisi
     
        ** 表单提交的方式有很多种,常用的两种 get和post
     
        ** Accept: text/html,image/*                                                            客户端识别文件类型  
        Accept-Charset: ISO-8859-1                                                             客户端字符集
        Accept-Encoding: gzip                                                                      客户端支持编码类型 gzip 压缩格式
        Accept-Language:zh-cn                                                                    客户端语言
        Host: www.itcast.com:80                                                                   访问服务器地址
        If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT                          (重要) 和Last-Modified 一起使用 控制缓存
        Referer: http://www.itcast.com/index.jsp                                        (重要) 防止盗链
        User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)   浏览器类型(文件下载时,不同浏览器进行不同处理)
        Connection: close/Keep-Alive                                                           请求后连接是关闭还是保持
        Date: Tue, 11 Jul 2000 18:23:51 GMT                                                请求时间
     
     
    * http协议的响应有三部分组成:
        ** 第一部分:响应行
            ** 结构:http版本、状态码 、状态码描述
            ** 状态码:当前的响应的状态
     
            *** 常见的状态码
                    * 200:成功 ok
                    * 302:重定向
                    * 304:查找本地缓存
                    * 404:资源找不到
                    * 500:服务器内部错误(代码写错了)
                    * 503:服务器挂了
     
        ** 第二部分:响应头
            ** 类似key value形式,一个key可以有一个或者多个value
            *** 三个重要的响应头信息
            * Location
                ** 经常和302一起实现重定向的操作
                * 代码
                //重定向使用状态码 302
                response.setStatus(302);
                //设置头信息 Location 完成重定向的操作
                response.setHeader("Location", "/day07/my/my.html");
     
            * Refresh
                ** 在页面的定时跳转
                ** 代码
                response.getWriter().write("页面将在3秒之后跳转..");
                //使用Refresh头信息实现定时跳转
                response.setHeader("Refresh", "3;url=/day07/other/other.html");
     
            * Last-Modified:
                ** 经常请求里面If-Modified-Since一起使用查找本地缓存
     
            * Content-Disposition:做文件下载时候
            *** 禁用浏览器缓存
            * Expires: -1
            Cache-Control: no-cache  
            Pragma: no-cache   
     
        ** 第三部分:响应体
            ** 显示到页面上的内容
     
        ** 重定向和转发区别
        *** 在一个请求里面,又做了一次请求
        ** 重定向:比如找小文借钱10万,小文没有钱,告诉我小温有钱,我再去找小温,把钱拿到
        *** 请求两次,响应两次
     
        ** 转发:比如找张三借钱,但是张三没有钱,张三去帮我找李四借钱,最终把钱给我
        *** 请求一次,响应一次
     
    ——————————————————————————————————————————————————————————————————————
     
     
     
     
     
     
    Springboot 构建http服务,返回的http行是'HTTP/1.1 200'而非'HTTP/1.1 200 OK'
     
     
    从Springboot 1.4.0以上版本就有这个问题
     
    准确的说应该是tomcat的版本升级了。 http/1.1协议里 ok是被括号的。也就是可以有可以无。
    客户端应该要兼容这种
    可以降低springbot内置tomcat版本号的方式
     
    1、解析Spring Boot父级依赖
     
    <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.5.6.RELEASE</version>
    </parent>
     
    这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。关于Spring Boot提供了哪些jar包的依赖,可查看C:Users用户.m2 epositoryorgspringframeworkootspring-boot-dependencies1.5.1.RELEASEspring-boot-dependencies-1.5.1.RELEASE.pom
     2、打开这个pom文件,搜索“tomcat.version” 会找到:<tomcat.version>8.5.16</tomcat.version>
        ①可以直接在这里修改你想要的tomcat版本
        ②在你自己的项目的pom里面添加版本,就可以直接覆盖这里的版本了。如:
    Pom中tomcat版本配置代码 
     
    ?
    <properties>
      <tomcat.version>8.0.29</tomcat.version>
    </properties> 
     添加这个之后,spingboot的默认启动的tomcat版本就可以达到你自己需要的了。到这里基本就完成了。
      但是有时候启动会报错:
    Tomcat启动报错代码 
     
    Caused by: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
      at org.apache.catalina.util.LifecycleBase.<clinit>(LifecycleBase.java:37)
      at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:169)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134)
      ... 13 common frames omitted
    因为这个时候的tocmat缺少jar包,maven项目的话加上下面这个依赖就好了:
     
    安卓调用方法
     
    底层返回null C++直接空指针了
     
     
  • 相关阅读:
    C++调用web服务(java事例供参考)
    ASP.NET1.1与2.0如何引入MagicAjax (转载自http://hi.baidu.com/zzticzh)
    爱,在世界末日时
    Why Google Chrome is Multiprocess Architecture
    Chrome
    Code Reuse in Google Chrome
    Google V8 JavaScrit 研究(1)
    第一篇文章
    User Experience
    WPF
  • 原文地址:https://www.cnblogs.com/alter888/p/8985616.html
Copyright © 2011-2022 走看看