真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何解決AJAX訪問SpringBoot2.0時的跨域問題

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何解決AJAX訪問SpringBoot2.0時的跨域問題,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在成都網(wǎng)站建設(shè)、網(wǎng)站制作過程中,需要針對客戶的行業(yè)特點(diǎn)、產(chǎn)品特性、目標(biāo)受眾和市場情況進(jìn)行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計方向。成都創(chuàng)新互聯(lián)公司還需要根據(jù)客戶的需求進(jìn)行功能模塊的開發(fā)和設(shè)計,包括內(nèi)容管理、前臺展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計和安全保護(hù)等功能。

如何解決AJAX訪問SpringBoot2.0時的跨域問題

一、關(guān)于跨域介紹

什么是跨域問題?

跨域問題來源于JavaScript的"同源策略",即只有 協(xié)議+主機(jī)名+端口號 (如存在)相同,則允許相互訪問。也就是說JavaScript只能訪問和操作自己域下的資源,不能訪問和操作其他域下的資源??缬騿栴}是針對JS和ajax的,html本身沒有跨域問題。

在前后分離的架構(gòu)下,跨域問題難免會遇見比如,站點(diǎn) http://domain-a.com 的某 HTML 頁面通過  的 src 請求 http://domain-b.com/image.jpg。網(wǎng)絡(luò)上的許多頁面都會加載來自不同域的CSS樣式表,圖像和腳本等資源。

出于安全原因,瀏覽器限制從腳本內(nèi)發(fā)起的跨源HTTP請求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 這意味著使用這些API的Web應(yīng)用程序只能從加載應(yīng)用程序的同一個域請求HTTP資源,除非使用CORS頭文件。

跨域的體現(xiàn),在于它的域名不同或者端口不同,但要注意以下的形式為非跨域模式 

http://www.example.com/index.html ==> http://www.example.com/login.html 

二、Spring Boot跨域(@CrossOrigin)

  當(dāng)然這里雖然指SpringBoot但是SpringMVC也是一樣的,要求在Spring4.2及以上的版本

1、@CrossOrigin使用場景要求

jdk1.8+

Spring4.2+

2、@CrossOrigin源碼解析(翻譯參考網(wǎng)絡(luò))

@Target({ ElementType.METHOD, ElementType.TYPE })

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface CrossOrigin {

    String[] DEFAULT_ORIGINS = { "*" };

    String[] DEFAULT_ALLOWED_HEADERS = { "*" };

    boolean DEFAULT_ALLOW_CREDENTIALS = true;

    long DEFAULT_MAX_AGE = 1800;

    /**

    * 同origins屬性一樣

    */

    @AliasFor("origins")

    String[] value() default {};

    /**

    * 所有支持域的集合,例如"http://domain1.com"。

    *

這些值都顯示在請求頭中的Access-Control-Allow-Origin

    * "*"代表所有域的請求都支持

      *

如果沒有定義,所有請求的域都支持

      * @see #value

      */

    @AliasFor("value")

    String[] origins() default {};

    /**

    * 允許請求頭重的header,默認(rèn)都支持

    */

    String[] allowedHeaders() default {};

    /**

    * 響應(yīng)頭中允許訪問的header,默認(rèn)為空

      */

    String[] exposedHeaders() default {};

    /**

    * 請求支持的方法,例如"{RequestMethod.GET, RequestMethod.POST}"}。

    * 默認(rèn)支持RequestMapping中設(shè)置的方法

    */

    RequestMethod[] methods() default {};

    /**

    * 是否允許cookie隨請求發(fā)送,使用時必須指定具體的域

    */

    String allowCredentials() default "";

    /**

    * 預(yù)請求的結(jié)果的有效期,默認(rèn)30分鐘

      */

    long maxAge() default -1;

3、@CrossOrigin使用

  SpringBoot下的請求處理控制器

   //實現(xiàn)跨域注解

//origin="*"代表所有域名都可訪問

//maxAge飛行前響應(yīng)的緩存持續(xù)時間的最大年齡,簡單來說就是Cookie的有效期 單位為秒

//若maxAge是負(fù)數(shù),則代表為臨時Cookie,不會被持久化,Cookie信息保存在瀏覽器內(nèi)存中,瀏覽器關(guān)閉Cookie就消失

@CrossOrigin(origins = "*",maxAge = 3600)

@RestController

@RequestMapping("/crawler")

public class CrawlerController {

 

@RequestMapping(value = "/fetchGroupMonthCrawlerStat", method =

        RequestMethod.GET, produces = {

"application/json;charSet=UTF-8" })

public String fetchGroupMonthCrawlerStat(HttpServletResponse response, 

        HttpServletRequest request) {

    //處理業(yè)務(wù)邏輯,并返回數(shù)據(jù);

}

}

上述就是小編為大家分享的如何解決AJAX訪問SpringBoot2.0時的跨域問題了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前文章:如何解決AJAX訪問SpringBoot2.0時的跨域問題
網(wǎng)站路徑:http://weahome.cn/article/gcggij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部