Java跨域配置


Java跨域配置

XML 配置全局

如果整個項目所有方法都可以訪問,則可以這樣配置

<mvc:cors>
    <mvc:mapping path="/**" />
</mvc:cors>

/**
其中* 表示匹配到下一層
 
** 表示后面不管有多少層,都能匹配。

請求路徑有/cross/,方法示例如下:

<mvc:cors>  
    <mvc:mapping path="/cross/*"/>  
</mvc:cors>  

上面表示有/cross/路徑的請求都支持跨域訪問,也可以增加其它的,如下:

<mvc:cors>  
    <mvc:mapping path="/cross/**" allowed-origins="" max-age="2500"/>  
    <mvc:mapping path="/domain/**"/>  
</mvc:cors> 

詳細配置:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="http://127.0.0.1:5500"
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>
<!--配置跨域-->
    <mvc:cors>
        <!--path:允許跨域請求的映射地址:/api/**-->
        <!--allowed-origins:指定允許跨域請求的路徑,*表示任意所有,也顯式指定值,值可以有多個,如:http://192.168.2.75,https://www.test.com-->
        <!--allowed-methods:指定允許跨域的請求方式,值可以有多個,用逗號隔開,如:get,post,put,delete,options-->
        <!--allowed-headers:指定允許跨域的請求頭,值可以有多個,用逗號隔開-->
        <!--allow-credentials:是否允許客戶端請求時攜帶資源,如cookie,值默認false,表示不允許-->
        <!--值為*都是表示任意,不限制-->
        <mvc:mapping path="/**" allowed-origins="*" allowed-methods="*" allowed-headers="*" allow-credentials="true"/>
        <!--實際開發中不建議使用*代碼所有,不安全-->
        <!--<mvc:mapping path="/**" allowed-origins="http://192.168.2.75,http://www.test.com" allowed-methods="GET,POST"/>-->
    </mvc:cors>

實際開發中:

​ allowed-origins:一般都會明確指定客戶端的url

​ allowed-methods:值一般都為"get,post,put,delete,options"

通過注解的方式允許跨域

在Controller類或其方法上加@CrossOrigin注解,來使之支持跨域

@CrossOrigin(origins = "*")

其中origins為CrossOrigin的默認參數,即跨域來源,* 即任何來源,也可以是其他域名。即可以以以下形式:

@CrossOrigin(origins="http://127.0.0.1:5500/")

SpringBoot的配置方式

@Configuration
public class MvcConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")//指定跨域映射地址
                        .allowedOrigins("http://127.0.0.1:5500/")//實際開發中需要指定客戶端具體url
                        .allowedMethods("GET","POST","PUT", "DELETE","OPTIONS")
                        .allowedHeaders("*")//設置允許的請求頭
                        //設置需要暴露給客戶端獲取的響應頭內容
//                        .exposedHeaders("access-control-allow-headers",
//                            "access-control-allow-methods",
//                            "access-control-allow-origin",
//                            "access-control-max-age",
//                            "X-Frame-Options")
                        .allowCredentials(true)//設置是否允許客戶端跨域攜帶驗證數據,如Cookie值
                        .maxAge(3600);//跨域請求超時
            }
        };
    }
}

可能出現的問題:500錯誤

錯誤配置:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="*"           // 此處變化
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>

修改為:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="http://127.0.0.1:5500"
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM