3xx-返回码简单介绍
301:资源已经永久迁到新的地址,新的URL会在响应头中返回
302:资源临时被迁到新的地址,新的URL会在响应头中返回
304:表明资源未改变。主要配合请求头中的If-None-Match和If-Modified-Since使用
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ma</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2.启动类配置
package com.ma.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
/**
* created by <a href="mailto:[email protected]" > mameng </a>
*/
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public OncePerRequestFilter shallowEtagHeaderFilter() {
return new ShallowEtagHeaderFilter();
}
}
3.DemoController
package com.ma.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
/**
* created by <a href="mailto:[email protected]" > mameng </a>
*/
@RestController
public class DemoController {
@GetMapping("/demo")
public String demo() {
return "demo";
}
@GetMapping("/demo2")
public String dem2() {
return new Date().toString();
}
@GetMapping("/301")
public void d301(HttpServletResponse response) {
response.setStatus(301);
response.setHeader("Location", "http://localhost:8080/demo2");
}
@GetMapping("/302")
public void p(HttpServletResponse response) {
response.setStatus(302);
response.setHeader("Location", "http://localhost:8080/demo2");
}
}
4.启动启动类
304 - GET http://localhost:8080/demo,两次相同的请求,第一次返回码为200,第二次返回码为304,请注意http头中的If-No-Match和Etag标记
301 - GET http://localhost:8080/301
302 - GET http://localhost:8080/302
301/302中请注意http头中的Referer字段.
参考链接