SpringBoot-两种常用方法解决CORS跨域问题 Leonan

1.创建一个名 leonan-cross-provider 的项目提供服务。application.yml文件配置端口

server:
  port: 8080

编写LeonanController 类

package org.leonan.leonancrossprovider.controller;

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

/**
 * @author Leonan
 * @date 2020/5/21 20:56
 */
@RestController
//@CrossOrigin(value = "http://localhost:8081")
public class LeonanController {

    //@CrossOrigin(value = "http://localhost:8081")
    @GetMapping("/gain")
    public String giveGirlfriend(){
        return "GiveGirlfriend";
    }
    //@CrossOrigin(value = "http://localhost:8081")
    @PostMapping("/gain")
    public String providerGirlfriend(){
        return "ProviderGirlfriend";
    }

}

2.创建一个名 leonan-cross-consumer 的项目消费服务。application.yml文件配置端口

server:
  port: 8081

在自动生成的resources/static目录下创建一个名 get_girlfriend.html 的文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取女票</title>

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>

    <div id="single"></div>
    <input type="button" onclick="getGrilfriend()" value="get">
    <input type="button" onclick="getGrilfriend2()" value="gain">
    <script>
        function getGrilfriend() {
            $.get('http://localhost:8080/gain', function (data) {
                $("#single").html(data);
            });
        }

        function getGrilfriend2() {
            $.post('http://localhost:8080/gain', function (data) {
                $("#single").html(data);
            });
        }
    </script>

</body>
</html>

注:没有网络的朋友自己引入本地 jquery.js 文件,我使用的网络引入
3.启动两个服务,浏览器访问写好的网页

http://localhost:8081/get_girlfriend.html

点击get、gain按钮控制台会报如下错误
在这里插入图片描述因为跨域请求被同源策略限制,所以报错
方法一:
下面我们将giveGirlfriend()、providerGirlfriend()方法上的注释的注解放开

@CrossOrigin(value = "http://localhost:8081")

在这里插入图片描述
重新运行 leonan-cross-provider 服务,再次点击按钮就可以获取到你心仪的女盆友了
在这里插入图片描述
或者将注解@CrossOrigin加到controller类上,就不需要在每个方法上添加了
在这里插入图片描述
方法二:
在 leonan-cross-provider 项目下创建MyWebMvcConfigurer类实现WebMvcConfigurer接口,重写addCorsMappings()方法。别忘添加@Configuration注解(这种方法就不需要@CrossOrigin注解了,别忘注释掉哦,不过不注释也没事,但我是严谨的程序员“单身汪”)

package org.leonan.leonancrossprovider.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author Leonan
 * @date 2020/5/21 22:08
 */
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {

        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8081") //接受此地址域的访问请求
                //.allowedOrigins("*") //接受所有地址域的访问请求,结果你懂得,女朋友不够发了
                .allowedMethods("*")
                .allowedHeaders("*");

    }

}

重启 leonan-cross-provider 服务,获取女票成功
在这里插入图片描述
如果写成
在这里插入图片描述
那么右键浏览器打开网页 get_girlfriend.html 也可以访问了,其它地址域亦可
在这里插入图片描述
我获取到女朋友了!可,老板leonan-cross-consumer,啥时候发货,嗯?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值