Javaweb使用cors完成跨域ajax數(shù)據(jù)交互
跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript施加的安全限制。
ajax本身實(shí)際上是通過(guò)XMLHttpRequest對(duì)象來(lái)進(jìn)行數(shù)據(jù)的交互,而瀏覽器出于安全考慮,不允許js代碼進(jìn)行跨域操作,所以會(huì)警告。
cors
全稱:Cross-Origin Resource Sharing
中文意思:跨域資源共享
它在維基百科上的定義是:跨域資源共享(CORS )是一種網(wǎng)絡(luò)瀏覽器的技術(shù)規(guī)范,它為Web服務(wù)器定義了一種方式,允許網(wǎng)頁(yè)從不同的域訪問(wèn)其資源。而這種訪問(wèn)是被同源策略所禁止的。CORS系統(tǒng)定義了一種瀏覽器和服務(wù)器交互的方式來(lái)確定是否允許跨域請(qǐng)求。 它是一個(gè)妥協(xié),有更大的靈活性,但比起簡(jiǎn)單地允許所有這些的要求來(lái)說(shuō)更加安全。
1、通過(guò)Maven引用
cors-filter、<span style="font-family: Arial, Helvetica, sans-serif;">java-property-utils二個(gè)jar包,修改pom.xml文件,加入下面內(nèi)容</span>
<!-- 跨域問(wèn)題 --> <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>java-property-utils</artifactId> <version>1.10</version> </dependency>
2、在web.xml里面配置過(guò)濾器,使用引入的jar中定義好的過(guò)濾器。注意修改cors.allowOrigin節(jié)點(diǎn),如果允許所有站點(diǎn)跨域訪問(wèn),可以修改為[*],如果是多個(gè)站點(diǎn),可以用[,]分隔配置。
<!-- 跨域問(wèn)題 --> <filter> <description>跨域過(guò)濾器</description> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>https://127.0.0.1:8380</param-value> </init-param> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET, POST, HEAD, PUT, DELETE</param-value> </init-param> <init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value> </init-param> <init-param> <param-name>cors.exposedHeaders</param-name> <param-value>Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.supportsCredentials</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、通過(guò)jQuery跨域調(diào)用數(shù)據(jù),實(shí)例代碼如下:
<!DOCTYPE html>
<html lang="en" xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>跨域測(cè)試</title>
<style type="text/css">
body{
margin:0px auto 0px auto;
}
.p_container {
margin: 0px auto 0px auto;
width: 100%;
height: 200px;
}
.p_container > iframe {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<p>
</p>
<button id="btn_test">跨域調(diào)用</button>
<p id="p_show"></p>
<script src="jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('#btn_test').click(function () {
//alert('dddd');
//var iframe_main = $("#iframe_main").contents();
//iframe_main.find("#account").val('test');
$.ajax({
url: "https://10.18.25.119:8480/jxfp/index.jsp",
type: "GET",
dataType: "text",
timeout: 10000,
xhr: function () { //這是關(guān)鍵 獲取原生的xhr對(duì)象 做以前做的所有事情
var xhr = jQuery.ajaxSettings.xhr();
xhr.withCredentials = true;
return xhr;
},
success: function (data) {
$("#p_show").html(data);
//Console.log(data);
},
error: function (e) {
$("#p_show").html(e.statusText);
}
});
});
});
</script>
</body>
</html>
以上就是是小編分享給大家的Javaweb使用cors完成跨域ajax數(shù)據(jù)交互的全部?jī)?nèi)容,希望對(duì)大家有所幫助。如果在閱讀過(guò)程中有什么問(wèn)題,可以給小編留言,我會(huì)及時(shí)回復(fù)大家的。也希望大家多多支持腳本之家!
相關(guān)文章
Spring5.2.x 源碼本地環(huán)境搭建的方法步驟
這篇文章主要介紹了Spring5.2.x 源碼本地環(huán)境搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
JAVA匿名內(nèi)部類(Anonymous Classes)的具體使用
本文主要介紹了JAVA匿名內(nèi)部類,匿名內(nèi)部類在我們JAVA程序員的日常工作中經(jīng)常要用到,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程
這篇文章主要介紹了詳解mybatis批量插入10萬(wàn)條數(shù)據(jù)的優(yōu)化過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java動(dòng)態(tài)循環(huán)隊(duì)列是如何實(shí)現(xiàn)的
今天帶大家學(xué)習(xí)java隊(duì)列的相關(guān)知識(shí),文章圍繞著如何實(shí)現(xiàn)Java動(dòng)態(tài)循環(huán)隊(duì)列展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
SpringBoot項(xiàng)目配置文件注釋亂碼的問(wèn)題解決方案
這篇文章主要介紹了SpringBoot 項(xiàng)目配置文件注釋亂碼的問(wèn)題解決方案,文中通過(guò)圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
Java中double和float類型的區(qū)別與使用方法
float和double都是用來(lái)表示浮點(diǎn)數(shù)的數(shù)據(jù)類型,但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于Java中double和float類型的區(qū)別與使用方法的相關(guān)資料,需要的朋友可以參考下2024-07-07

