Javaweb使用cors完成跨域ajax數(shù)據(jù)交互
跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。
ajax本身實際上是通過XMLHttpRequest對象來進行數(shù)據(jù)的交互,而瀏覽器出于安全考慮,不允許js代碼進行跨域操作,所以會警告。
cors
全稱:Cross-Origin Resource Sharing
中文意思:跨域資源共享
它在維基百科上的定義是:跨域資源共享(CORS )是一種網(wǎng)絡瀏覽器的技術規(guī)范,它為Web服務器定義了一種方式,允許網(wǎng)頁從不同的域訪問其資源。而這種訪問是被同源策略所禁止的。CORS系統(tǒng)定義了一種瀏覽器和服務器交互的方式來確定是否允許跨域請求。 它是一個妥協(xié),有更大的靈活性,但比起簡單地允許所有這些的要求來說更加安全。
1、通過Maven引用
cors-filter、<span style="font-family: Arial, Helvetica, sans-serif;">java-property-utils二個jar包,修改pom.xml文件,加入下面內(nèi)容</span>
<!-- 跨域問題 --> <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里面配置過濾器,使用引入的jar中定義好的過濾器。注意修改cors.allowOrigin節(jié)點,如果允許所有站點跨域訪問,可以修改為[*],如果是多個站點,可以用[,]分隔配置。
<!-- 跨域問題 --> <filter> <description>跨域過濾器</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、通過jQuery跨域調(diào)用數(shù)據(jù),實例代碼如下:
<!DOCTYPE html> <html lang="en" xmlns="https://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>跨域測試</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 () { //這是關鍵 獲取原生的xhr對象 做以前做的所有事情 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ù)交互的全部內(nèi)容,希望對大家有所幫助。如果在閱讀過程中有什么問題,可以給小編留言,我會及時回復大家的。也希望大家多多支持腳本之家!
相關文章
Spring5.2.x 源碼本地環(huán)境搭建的方法步驟
這篇文章主要介紹了Spring5.2.x 源碼本地環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09JAVA匿名內(nèi)部類(Anonymous Classes)的具體使用
本文主要介紹了JAVA匿名內(nèi)部類,匿名內(nèi)部類在我們JAVA程序員的日常工作中經(jīng)常要用到,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程
這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java動態(tài)循環(huán)隊列是如何實現(xiàn)的
今天帶大家學習java隊列的相關知識,文章圍繞著如何實現(xiàn)Java動態(tài)循環(huán)隊列展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06Java中double和float類型的區(qū)別與使用方法
float和double都是用來表示浮點數(shù)的數(shù)據(jù)類型,但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關于Java中double和float類型的區(qū)別與使用方法的相關資料,需要的朋友可以參考下2024-07-07