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\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-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++直接空指针了

Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误

原文地址:https://www.cnblogs.com/alter888/p/8985616.html

时间: 2024-10-01 06:15:00

Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误的相关文章

springboot构建rest服务,打包docker镜像

场景 项目提供rest服务,需要导出rest接口文档,并把服务打包成docker镜像. 过程 1.使用SpringBoot实现rest服务 Maven的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://mav

SpringBoot构建微服务实战

1. 创建一个Maven项目, 目录结构: pom.xml文件内容如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/mav

jersey构建rest服务返回json数据

1.  eclipse 创建 dynamic web project 2.  将jersey相关jar包放到libs目录下 3. web.xml 增加 jersey 相关内容 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.su

SpringBoot 快速构建微服务体系 知识点总结

可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽量将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,沿着这个思路开发和交付的软件服务实体就叫做“微服务”. 3.微服务的好处 (1)独立,独立,还是独立.每一个微服务都是一个小王国,跳出了“大一统”(Monolith)王国的统治,开始从各个层面打造自己的独立能力,从而保障自己的小王国可

pring Cloud构建微服务架构

SpringCloud-Learning 本项目内容为Spring Cloud教程的程序样例. 作者博客:http://blog.didispace.com Spring Cloud系列博文:http://blog.didispace.com/categories/Spring-Cloud/ Spring Cloud中文社区:http://bbs.springcloud.com.cn/ GitHub:https://github.com/dyc87112/SpringCloud-Learning

服务器返回的各种HTTP状态码介绍

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范扩展. 所有状态码的第一个数字代表了响应的五种状态之一. 100系列码 从 100到199范围的HTTP状态码是信息报告码.基于各种原因考虑,大多数情况下我们 是很少看见这些代码的.首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在

REST介绍以及常用的返回状态码

简介 Representational State Transfer 简称 REST 描述了一个架构样式的网络系统.REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful. 概念: 资源(Resources) REST是”表现层状态转化”,其实它省略了主语.”表现层”其实指的是”资源”的”表现层”.那么什么是资源呢?就是我们平常上网访问的一张图片.一个文档.一个视频等.这些资源我们通过URI来定位,也就是一个URI表示一个资源. 表现层(Represe

http访问过程和web访问时返回状态码介绍

一次完整的http请求处理过程: (1) 建立或处理连接:接收请求或拒绝请求: (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程: (3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息: (4) 访问资源:获取请求报文中请求的资源: (5) 构建响应报文: (6) 发送响应报文: (7) 记录日志: status(状态码): 1xx:100-101, 信息提示: 2xx:200-206, 成功 3xx:300-305, 重定向 4xx:40

服务器返回的各种HTTP状态码介绍(转)

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范扩展. 所有状态码的第一个数字代表了响应的五种状态之一. 100系列码 从100到199范围的HTTP状态码是信息报告码.基于各种原因考虑,大多数情况下我们 是很少看见这些代码的.首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在屏