springboot跨域访问

代码地址:https://gitee.com/shiqi10001/springboot-crossorigin-server1.git,

https://gitee.com/shiqi10001/springboot-crossorigin-server2.git

参考springboot官方文档:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

@CrossOrigin注解

一个springboot项目里(比如8010端口)后端写了一个接口,static目录下写了一个页面,这个页面可以访问后端接口(相同协议ip端口)

server:
  port: 8010
  servlet:
    context-path: /demo1
package org.example.demo1;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class HelloController {
    @PostMapping("/hello")
    public List hello() {
        List list = new ArrayList();
        list.add("hello");
        return list;
    }

    @GetMapping("/hi")
    public Object hi() {
        return "hi";
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
欢迎!

<script src="jquery-2.1.4.js"></script>
<script>
        $.ajax({
            url:"/demo1/hello",
            type:"post",
            dataType:"json",
            success: function (data) {
                console.log(data);
            },
            error: function (a,b,c,d,e,f) {
                console.log(a);
                console.log(b);
                console.log(c);
                console.log(d);
                console.log(e);
                console.log(f);
            },
        })

</script>
</body>
</html>

但是这个页面不能访问另一个项目(比如8020端口)的接口,浏览器同源策略

server:
  port: 8020
  servlet:
    context-path: /demo2
package org.example.demo2;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class HelloController {
    
    @PostMapping("/hello2")
    public List hello() {
        List list = new ArrayList();
        list.add("hello2");
        return list;
    }
    @GetMapping("/hi2")
    public Object hi() {
        return "hi2";
    }
}

在这里插入图片描述

在另一个程序要访问的接口上加上@CrossOrigin注解就可以了,默认情况下@CrossOrigin允许所有的origin和@RequestMapping annotation中指定的HTTP方法

package org.example.demo2;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class HelloController {
    @CrossOrigin
    @PostMapping("/hello2")
    public List hello() {
        List list = new ArrayList();
        list.add("hello2");
        return list;
    }
    @GetMapping("/hi2")
    public Object hi() {
        return "hi2";
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值