最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 2.X優(yōu)雅的解決跨域問題

 更新時(shí)間:2019年03月20日 15:49:22   作者:java_lover  
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.X如何優(yōu)雅的解決跨域問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.X具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

一、什么是源和跨域

源(origin)就是協(xié)議、域名和端口號(hào)。

URL由協(xié)議、域名、端口和路徑組成,如果兩個(gè)URL的協(xié)議、域名和端口全部相同,則表示他們同源。否則,只要協(xié)議、域名、端口有任何一個(gè)不同,就是跨域。

對(duì)https://www.baidu.com/index.html進(jìn)行跨域比較:

URL 是否跨域 原因
https://www.baidu.com/more/index.html 不跨域 三要素相同
https://map.baidu.com/ 跨域 域名不同
http://www.baidu.com/index.html 跨域 協(xié)議不同
https://www.baidu.com:81/index.html 跨域 端口號(hào)不同

隨著前后端分離開發(fā)的越來越普及,會(huì)經(jīng)常遇到跨域的問題,當(dāng)我們?cè)跒g覽器中看到這樣的錯(cuò)誤時(shí),就需要意識(shí)到遇到了跨域:

二、什么是同源策略?

同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。可以說Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。

同源策略又分為以下兩種:

  • DOM同源策略:禁止對(duì)不同源頁(yè)面DOM 進(jìn)行操作。這里主要場(chǎng)景是iframe跨域的情況,不同域名的iframe是限制互相訪問的。
  • XMLHttpRequest同源策略:禁止使用XHR對(duì)象向不同源的服務(wù)器地址發(fā)起HTTP請(qǐng)求。

三、Spring Boot跨域解決方案

本例使用Spring Boot 2.1.2.RELEASE演示,分別用8080和8081端口啟動(dòng),部分代碼如下:

跨域頁(yè)面:testOtherDomain.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>不同域名-Java碎碎念</title>
</head>
<body>
<button id="b1">點(diǎn)我測(cè)試</button>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script>
 $("#b1").click(function () {
  $.ajax({
   url: "http://localhost:8081/hello",
   type: "post",
   success:function (res) {
    console.log(res);
   }
  })
 });
</script>
</body>
</html>

接口類:HelloController

package com.example.helloSpringBoot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
 @RequestMapping("/hello")
 public String HelloSpring (){
  return "hello Java碎碎念!";
 }
}

未解決跨域前運(yùn)行截圖:

在Spring Boot 2.X應(yīng)用程序中可以使用注解@CrossOrigin,也可以通過使用WebMvcConfigurer對(duì)象來定義全局CORS配置。

1、@CrossOrigin注解示例代碼

package com.example.helloSpringBoot.controller;

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

@RestController
public class HelloController {

 @CrossOrigin
 @RequestMapping("/hello")
 public String HelloSpring (){
  return "hello Java碎碎念!";
 }
}

2. WebMvcConfigurer對(duì)象示例代碼

package com.example.helloSpringBoot.config;

import org.springframework.context.annotation.Bean;
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 MyConfiguration {
 @Bean
 public WebMvcConfigurer corsConfigurer() {
  return new WebMvcConfigurer() {
   @Override
   public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/*")
       .allowedOrigins("*")
       .allowCredentials(true)
       .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
       .maxAge(3600);
   }
  };
 }
}

按照上面兩種方式的一種配置完成后,即可實(shí)現(xiàn)對(duì)跨域的支持,運(yùn)行成功截圖如下:

 

完整源碼地址:https://github.com/suisui2019/helloSpringBoot (本地下載)

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Intellij?IDEA?中調(diào)試?maven?插件的步驟

    Intellij?IDEA?中調(diào)試?maven?插件的步驟

    這篇文章主要介紹了Intellij?IDEA?中調(diào)試?maven?插件,本文分步驟給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • @RefreshScope 自動(dòng)刷新配置文件的實(shí)例講解

    @RefreshScope 自動(dòng)刷新配置文件的實(shí)例講解

    efreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一種特殊的scope實(shí)現(xiàn),用來實(shí)現(xiàn)配置、實(shí)例熱加載,這篇文章主要介紹了@RefreshScope 自動(dòng)刷新配置文件,需要的朋友可以參考下
    2022-11-11
  • Java編程中的4種代碼塊詳解

    Java編程中的4種代碼塊詳解

    在本篇內(nèi)容里小編個(gè)總結(jié)了Java編程中的4種代碼塊相關(guān)的知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。
    2021-06-06
  • 淺談java中類名.class, class.forName(), getClass()的區(qū)別

    淺談java中類名.class, class.forName(), getClass()的區(qū)別

    下面小編就為大家?guī)硪黄獪\談java中類名.class, class.forName(), getClass()的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java類加載機(jī)制實(shí)現(xiàn)流程及原理詳解

    Java類加載機(jī)制實(shí)現(xiàn)流程及原理詳解

    這篇文章主要介紹了Java類加載機(jī)制實(shí)現(xiàn)流程及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 從java面試題了解你所模糊的數(shù)組

    從java面試題了解你所模糊的數(shù)組

    這篇文章主要介紹了從java面試題了解你所模糊的數(shù)組,數(shù)組用來存儲(chǔ)一系列的數(shù)據(jù)項(xiàng),其中的每一項(xiàng)具有相同的基本數(shù)據(jù)類型、類或相同的父類。通過使用數(shù)組,可以在很大程度上縮短和簡(jiǎn)化程序代碼,從而提高應(yīng)用程序的效率。,需要的朋友可以參考下
    2019-06-06
  • 解決maven沒有打包xml文件的問題

    解決maven沒有打包xml文件的問題

    這篇文章主要介紹了解決maven沒有打包xml文件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java list中包含某個(gè)字符串的兩種方法實(shí)現(xiàn)

    java list中包含某個(gè)字符串的兩種方法實(shí)現(xiàn)

    在Java開發(fā)中,經(jīng)常需要判斷一個(gè)List中是否包含特定的字符串,包括使用contains()方法和循環(huán)遍歷判斷,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Windows下將JAVA?jar注冊(cè)成windows服務(wù)的方法

    Windows下將JAVA?jar注冊(cè)成windows服務(wù)的方法

    這篇文章主要介紹了Windows下將JAVA?jar注冊(cè)成windows服務(wù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java如何通過SSE實(shí)現(xiàn)消息推送詳解

    Java如何通過SSE實(shí)現(xiàn)消息推送詳解

    這篇文章主要介紹了Java如何通過SSE實(shí)現(xiàn)消息推送的相關(guān)資料,SSE是一種服務(wù)器向客戶端推送數(shù)據(jù)的技術(shù),基于HTTP協(xié)議,利用長(zhǎng)連接特性,它適用于單向數(shù)據(jù)流場(chǎng)景,如股票價(jià)格更新、新聞實(shí)時(shí)推送等,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

遵义县| 武穴市| 班玛县| 瑞安市| 太康县| 天柱县| 柯坪县| 措美县| 丹棱县| 余干县| 和林格尔县| 佳木斯市| 德安县| 乌拉特中旗| 临高县| 湘潭县| 临安市| 睢宁县| 阿瓦提县| 娱乐| 韩城市| 万载县| 微博| 东源县| 包头市| 南雄市| 五河县| 杂多县| 如东县| 哈巴河县| 宽甸| 鄄城县| 龙胜| 浙江省| 八宿县| 修水县| 来宾市| 马边| 和龙市| 台中市| 时尚|