本文由跨域、cors的概念開始,進而向大家介紹了Javaweb使用cors完成跨域ajax資料交互的相關內容,需要的朋友可以了解下。
跨網域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全性限制。
ajax本身實際上是透過XMLHttpRequest物件來進行資料的交互,而瀏覽器出於安全考慮,不允許js程式碼進行跨域操作,所以會警告。
cors
全名為:Cross-Origin Resource Sharing
中文意思:跨域資源共享
#它在維基百科上的定義是:跨域資源共享(CORS )是一種網頁瀏覽器的技術規範,它為網頁伺服器定義了一種方式,允許網頁從不同的網域存取其資源。而這種存取是被同源策略所禁止的。 CORS系統定義了一種瀏覽器和伺服器互動的方式來決定是否允許跨網域請求。 它是一個妥協,有更大的靈活性,但比起簡單地允許所有這些的要求更安全。
1、透過Maven引用
cors-filter、2e0587c72c1e5f37d0fcd7d651ecc84a
<!-- 跨域问题 --> <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節點,如果允許所有站點跨域訪問,可以修改為[*],如果是多個站點,可以用[,]分隔配置。
<!-- 跨域问题 --> <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跨域呼叫資料,實例程式碼如下:
<!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">跨域调用</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資料互動的實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!