springBoot学习笔记九:CORS实现跨域资源共享

原文链接: https://my.oschina.net/tij/blog/3056900
一、项目说明

项目环境:jdk1.8+tomcat8+idea2018

源代码github地址:

实现目标:如果做过前后端分离项目的人或多或少的都会遇到过请求跨域的问题,这都是因为浏览器同源策略引起的,什么是跨域?。解决跨域的方式有很多,比如jsonp、cors、iframe、服务器设置代理等,这里通过cors的方式实现跨域请求,并且cors方式一般是在服务端通过过滤器实现。

二、整合说明

        注:这里通过在hbuilder中建一个web项目模拟前端请求,后端通过建springboot项目并提供接口,springboot中支持全局与局部两种配置跨域的方式。

(1)通过idea等方式创建springBoot模板项目

springBoot学习笔记九:CORS实现跨域资源共享_第1张图片

(2)在controller下创建HelloSpringbootController

package com.example.controller;
/**
 * 测试接口controller
 */

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloSpringbootController {

    /**
     * 不允许跨域请求
     * @return
     */
    @PostMapping("/crossNotAllowed")
    public String crossNotAllowed(){
        return "Hello Springboot!";
    }

    /**
     * 允许跨域请求(细粒度控制)
     * value:允许的请求域
     * maxAge:有效时间
     * allowedHeaders:允许的请求头
     * @return
     */
    @PostMapping("/crossAllowed")
    @CrossOrigin(value = "*",maxAge = 1800,allowedHeaders = "*")
    public String crossAllowed(){
        return "Hello Springboot!";
    }
}

(3)在hbuilder中创建web项目springboot

springBoot学习笔记九:CORS实现跨域资源共享_第2张图片

(4)在springboot下创建index.html页面



	
		
		springboot跨域
	
	
		
		
	
	
	
	

(6)测试允许跨域接口crossAllowed

springBoot学习笔记九:CORS实现跨域资源共享_第3张图片

(7)测试不允许跨域接口crossNotAllowed

springBoot学习笔记九:CORS实现跨域资源共享_第4张图片

(8)在config下创建CorsConfig

package com.example.config;
/**
 * 跨域请求全局配置config
 */

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    /**
     * 添加跨域全局配置
     * @param registry
     */
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/**")    //过滤请求路径
                .allowedHeaders("*")    //过滤请求头
                .allowedMethods("*")    //过滤请求方法
                .maxAge(1800)   //有效时间
                .allowedOrigins("*");   //过滤请求域
    }
}

(9)测试不允许跨域接口crossNotAllowed

springBoot学习笔记九:CORS实现跨域资源共享_第5张图片

转载于:https://my.oschina.net/tij/blog/3056900

你可能感兴趣的:(springBoot学习笔记九:CORS实现跨域资源共享)