Java開(kāi)發(fā)中解決Js的跨域問(wèn)題過(guò)程解析
這篇文章主要介紹了Java開(kāi)發(fā)中解決Js的跨域問(wèn)題過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
主流方法有JSONP和CORS兩種,這里記一下后者的方式,理論基礎(chǔ)就是在請(qǐng)求的時(shí)候在http請(qǐng)求頭中添加如下屬性:
//指定允許其他域名訪(fǎng)問(wèn) Access-Control-Allow-Origin:http://localhost:8989
如果后端用Java開(kāi)發(fā),在返回請(qǐng)求中可以添加如下屬性
1.在跨域問(wèn)題中,如果不操作cookie,只需要在后端代碼中添加如下代碼就可以
response.setHeader("Access-Control-Allow-Origin", "http://localhost:8989"); //第二個(gè)參數(shù)的意思就是說(shuō)是哪個(gè)地址訪(fǎng)問(wèn),如果要通配全部,就使用*即可
雖然是加在了response中,但是HTTP是基于TCP(傳輸層協(xié)議)的應(yīng)用層協(xié)議,每次請(qǐng)求的時(shí)候都會(huì)有“三次握手”的過(guò)程,所以添加在response中后,會(huì)在第一次請(qǐng)求中告知客戶(hù)端可以請(qǐng)求。
如果是SpringMVC4.2以上版本的話(huà),一個(gè)注解就可以搞定
@CrossOrigin(origins=http://localhost:8080)
這個(gè)注解就是對(duì)上邊的代碼的封裝,源碼如下:
@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CrossOrigin { @Deprecated String[] DEFAULT_ORIGINS = new String[]{"*"}; @Deprecated String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"}; @Deprecated boolean DEFAULT_ALLOW_CREDENTIALS = false; @Deprecated long DEFAULT_MAX_AGE = 1800L; @AliasFor("origins") String[] value() default {}; @AliasFor("value") String[] origins() default {}; String[] allowedHeaders() default {}; String[] exposedHeaders() default {}; RequestMethod[] methods() default {}; String allowCredentials() default ""; long maxAge() default -1L; }
@Deprecated:若某類(lèi)或某方法加上該注解之后,表示此方法或類(lèi)不再建議使用,調(diào)用時(shí)也會(huì)出現(xiàn)刪除線(xiàn),但并不代表不能用,只是說(shuō),不推薦使用,因?yàn)檫€有更好的方法可以調(diào)用。
2.如果跨域請(qǐng)求中涉及了對(duì)cookie的操作,就要添加一個(gè)屬性,代碼和注解分別為
response.setHeader("Access-Control-Allow-Origin", "http://localhost:8989"); response.setHeader("Access-Control-Allow-Credentials", "true");
@CrossOrigin(origins="http://localhost:8989",allowCredentials="true")
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus如何最優(yōu)雅最簡(jiǎn)潔地完成數(shù)據(jù)庫(kù)操作
Mybatis-Plus是一個(gè)?Mybatis?的增強(qiáng)工具,在?Mybatis?的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MyBatis-Plus如何最優(yōu)雅最簡(jiǎn)潔地完成數(shù)據(jù)庫(kù)操作的相關(guān)資料,需要的朋友可以參考下2022-03-03Java多線(xiàn)程下解決數(shù)據(jù)安全問(wèn)題
這篇文章主要介紹了Java多線(xiàn)程下解決數(shù)據(jù)安全問(wèn)題,本文使用代碼進(jìn)行講解,可供大家學(xué)習(xí)參考2021-08-08SpringBoot http post請(qǐng)求數(shù)據(jù)大小設(shè)置操作
這篇文章主要介紹了SpringBoot http post請(qǐng)求數(shù)據(jù)大小設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Mybatis如何使用正則模糊匹配多個(gè)數(shù)據(jù)
這篇文章主要介紹了Mybatis如何使用正則模糊匹配多個(gè)數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01Admin - SpringBoot + Maven 多啟動(dòng)環(huán)境配置實(shí)例詳解
這篇文章主要介紹了Admin - SpringBoot + Maven 多啟動(dòng)環(huán)境配置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03詳談@Cacheable不起作用的原因:bean未序列化問(wèn)題
這篇文章主要介紹了@Cacheable不起作用的原因:bean未序列化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01