欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot+Vue解決跨域問(wèn)題幾種處理方案介紹

 更新時(shí)間:2025年07月23日 09:31:28   作者:隨意石光  
同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,同源策略會(huì)阻止一個(gè)域的javascript腳本和另外一個(gè)域的內(nèi)容進(jìn)行交互,所以本文我家里聊聊SpringBoot結(jié)合Vue解決跨域問(wèn)題幾種處理方案吧

為什么會(huì)出現(xiàn)跨域問(wèn)題?

出于瀏覽器的同源策略限制。 同源策略(Sameoriginpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會(huì)受到影響。

可以說(shuō)Web是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。同源策略會(huì)阻止一個(gè)域的javascript腳本和另外一個(gè)域的內(nèi)容進(jìn)行交互。所謂同源(即指在同一個(gè)域)就是兩個(gè)頁(yè)面具有相同的協(xié)議(protocol),主機(jī)(host)和端口號(hào)(port)。

什么是跨域?

當(dāng)一個(gè)請(qǐng)求url的協(xié)議、域名、端口三者之間任意一個(gè)與當(dāng)前頁(yè)面url不同即為跨域。

1 . 兩個(gè)相同的源之間瀏覽器默認(rèn)其是可以相互訪問(wèn)資源和操作DOM的。

2 .兩個(gè)不同的源之間 若想要相互訪問(wèn)資源或者操作DOM,那么會(huì)有一套基礎(chǔ)的安全策略的制約。

后臺(tái)解決方案

1.方法一:@CrossOrigin

注意:

1、springMVC的版本要在4.2或以上版本才支持@CrossOrigin

2、非@CrossOrigin沒(méi)有解決跨域請(qǐng)求問(wèn)題,而是不正確的請(qǐng)求導(dǎo)致無(wú)法得到預(yù)期的響應(yīng),導(dǎo)致瀏覽器端提示跨域問(wèn)題。

3、在Controller注解上方添加@CrossOrigin注解后,仍然出現(xiàn)跨域問(wèn)題,解決方案之一就是:

在@RequestMapping注解中沒(méi)有指定Get、Post方式,具體指定后,問(wèn)題解決。

其中@CrossOrigin中的2個(gè)參數(shù):

origins : 允許可訪問(wèn)的域列表

maxAge:準(zhǔn)備響應(yīng)前的緩存持續(xù)的最大時(shí)間(以秒為單位)。可以配置在Controller上 也可以配置在方法上。

2. 方法二: 過(guò)濾器

package com.sysg.config;


import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
 * @author 77916
 */

@Component
@Order(1)
@WebFilter(filterName = "CoresFilter", urlPatterns = "/*")
public class CoresFilter implements Filter {
    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //表示所有的域都可以接受
        response.setHeader("Access-Control-Allow-Origin", "*");
        //允許所有的方法
        response.setHeader("Access-Control-Allow-Methods","POST,GET,DELETE,PUT,OPTIONS");
        //請(qǐng)求得到結(jié)果的有效期
        response.setHeader("Access-Control-Max-Age","3600");
        response.setHeader("Access-Control-Allow-Headers","x-requested-with,Content-Type,access-control-allow-origin,version-info");
        //該值是一個(gè)boolean值,表示允許發(fā)送cookie,默認(rèn)情況下cookie不包含在cores中,設(shè)置為true
        response.setHeader("Access-Control-Allow-Credentials","true");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
}

web.xml(寫(xiě)在/webapp/WEB-INF目錄下)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 跨域問(wèn)題解決 -->
    <filter>
        <filter-name>CoresFilter</filter-name>
        <filter-class>com.sysg.config.CoresFilter</filter-class>
        <init-param>
            <param-name>IsCross</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CoresFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

???????</web-app>

3.方法三:配置(SpringBoot)

package com.sysg.config;

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

@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedHeaders("*")
                .allowedMethods("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH")
                .maxAge(3600);
    }
}

注意:配置類文件一定要寫(xiě)在啟動(dòng)類所在的包下,否則不生效?。。?!

到此這篇關(guān)于SpringBoot+Vue解決跨域問(wèn)題幾種處理方案介紹的文章就介紹到這了,更多相關(guān)SpringBoot Vue解決跨域問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java如何實(shí)現(xiàn)一個(gè)優(yōu)秀的散列表

    詳解Java如何實(shí)現(xiàn)一個(gè)優(yōu)秀的散列表

    這篇文章主要通過(guò)簡(jiǎn)單的示例為大家詳細(xì)介紹了在Java中如何實(shí)現(xiàn)一個(gè)優(yōu)秀的散列表,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下
    2023-07-07
  • IDEA?高版本?PlantUML?插件默認(rèn)主題修改的詳細(xì)過(guò)程

    IDEA?高版本?PlantUML?插件默認(rèn)主題修改的詳細(xì)過(guò)程

    PlantUML 是非常不錯(cuò)的使用腳本畫(huà)圖的工具,效率很高,很多人會(huì)選擇在 IDEA 中安裝 PlantUML Integration 插件,這篇文章主要介紹了IDEA?高版本?PlantUML?插件默認(rèn)主題修改,需要的朋友可以參考下
    2022-09-09
  • JDBC中Statement的Sql注入問(wèn)題詳解

    JDBC中Statement的Sql注入問(wèn)題詳解

    這篇文章主要介紹了JDBC中Statement的Sql注入問(wèn)題詳解,sql注入攻擊指的是通過(guò)構(gòu)建特殊的輸入作為參數(shù)傳入web應(yīng)用程序,而這些輸入大都是sql語(yǔ)法里的一些組合,通過(guò)執(zhí)行sql語(yǔ)句進(jìn)而執(zhí)行攻擊者所要做的操作,需要的朋友可以參考下
    2023-10-10
  • Java爬蟲(chóng)實(shí)戰(zhàn)抓取一個(gè)網(wǎng)站上的全部鏈接

    Java爬蟲(chóng)實(shí)戰(zhàn)抓取一個(gè)網(wǎng)站上的全部鏈接

    這篇文章主要介紹了JAVA使用爬蟲(chóng)抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
    2016-10-10
  • springboot中swagger快速啟動(dòng)流程

    springboot中swagger快速啟動(dòng)流程

    這篇文章主要介紹了springboot中的swagger快速啟動(dòng)流程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 關(guān)于Java項(xiàng)目讀取resources資源文件路徑的那點(diǎn)事

    關(guān)于Java項(xiàng)目讀取resources資源文件路徑的那點(diǎn)事

    這篇文章主要介紹了關(guān)于Java項(xiàng)目讀取resources資源文件路徑的那點(diǎn)事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 解析Java格式字符串的使用

    解析Java格式字符串的使用

    本文通過(guò)實(shí)例給大家介紹了java格式字符串的使用,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02
  • Java編程技巧:if-else優(yōu)化實(shí)踐總結(jié)歸納

    Java編程技巧:if-else優(yōu)化實(shí)踐總結(jié)歸納

    這篇文章主要介紹了Java中避免過(guò)多if-else的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2021-06-06
  • Hadoop 中 HBase Shell命令的詳解

    Hadoop 中 HBase Shell命令的詳解

    這篇文章主要介紹了Hadoop 中 HBase Shell命令的詳解的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Feign使用@PathVariable方式

    Feign使用@PathVariable方式

    Feign使用@PathVariable注解在URL中插入變量,類似于SpringMVC的用法,通過(guò)示例展示了如何使用該注解,并在實(shí)際調(diào)用中替換占位符
    2024-11-11

最新評(píng)論