【SpringBoot學習第十三天】CORS支持----即跨域問題

今天我們來看一下Springboot的CORS支持。

首先,什麼是CORS?

CORS指的是跨域問題,即跨域是因爲受到了同源策略的限制,同源策略要求源相同才能正常進行通信,即協議、域名、端口號都完全一致。比如說我們有兩個Tomcat,一個是8070端口,一個是8071端口,如果想讓兩個Tomcat進行通信,那麼是需要進行支持的。現在絕大多數的瀏覽器都已經支持了跨域問題,比如JSONP、或iframe等等。接下來我們來看一下Springboot支持的跨域問題。

首先我們新建一個CORS類,加入@Configuration註解,改註解表示這個類是配置類。(8070端口

CORSConfiguration.java

package com.example.demo.configuration;

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

/**
 * @Description 
 * 自定義CORS配置類,實現WebMvcConfigurer接口,重寫addCorsMappings方法
 * @Author wangs
 * @Date 2019/12/12 16:25
 */
@Configuration  //聲明這是一個配置類
public class CORSConfiguration implements WebMvcConfigurer{
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedHeaders("*").allowedMethods("*");
    }
}

然後我們編寫一個Controller,訪問數據路徑爲“/json/getJson”,

package com.example.demo.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

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

/**
 * @Description TODO
 * @Author wangs
 * @Date 2019/12/217:05
 */

@Controller
@RequestMapping(value = "/json/")
public class JSonController {


    @RequestMapping("getJson")
    @ResponseBody
    public Map<String,Object>getJson(){
        Map<String,Object>map =new HashMap<>();
        map.put("熊道遠","沙雕");
        map.put("田雨","制杖");
        map.put("周科","耳鼻");
        return map;
    }
}

本地請求沒問題

然後我們編寫一個8071端口html,發送ajax請求請求8070端口的服務

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>core</title>
    <script type="text/javascript" src="/cors/lib/jquery-3.4.1.min.js"></script>
</head>
<body>
    <button id="btn">點擊獲取8070的數據</button>
</body>
</html>
<script type="text/javascript">
    $(function () {
        $("#btn").click(function () {
            $.post("http://localhost:8070/demo/json/getJson", function (map) {
                    console.log(map);
                }
            );
        });
    });
</script>

然後我們是用8071端口訪問8070端口的數據

成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章