ajax跨域相關

ajax 技術使用xmlhttprequest組件附送請求時,發送請求的url和本網頁的url地址必須在同一個域名下
若是須要跨域,可使用iframe或者<javascript src="url"></script>的方式
 
http://www.cnblogs.com/Spring/archive/2008/10/21/1315882.html
http://exceptioneye.iteye.com/blog/1405495 
 
 

新的W3C策略實現了HTTP跨域訪問,還虧我找了好久的資料解決這個問題:
只須要在servlet中返回的頭部信息中添加Access-Control-Allow-Origin這個既可。
好比我要開放全部我本地的跨域訪問,就設置以下:response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1/*");
這樣我本地的A工程中的AJAX請求就能夠跨域請求B工程中的servlet。 javascript

 

   1: var scriptBlock = document.createElement("script");
   2:  
   3: function StartGet()
   4: {
   5:     scriptBlock.src = "";
   6:     scriptBlock.src = "http://Domain2/GetData.aspx";
   7:     scriptBlock.type = "text/javascript";
   8:     scriptBlock.language = "javascript";
   9:     document.getElementsByTagName("head")[0].appendChild(scriptBlock);
  10:     scriptBlock.onreadystatechange = ReturnData;
  11: }
  12:  
  13: function ReturnData()
  14: {
  15:     //alert(scriptBlock.readyState);
  16:  
  17:     //uninitialized        Object is not initialized with data. 
  18:     //loading            Object is loading its data. 
  19:     //loaded            Object has finished loading its data. 
  20:     //interactive       User can interact with the object even though it is not fully loaded. 
  21:     //complete          Object is completely initialized. 
  22:  
  23:     if("loaded" == scriptBlock.readyState)
  24:     {
  25:         var div = document.getElementById("htmldiv");
  26:         div.innerHTML = a.project[0].name; //a是返回的json裏面的變量
  27:     }    
  28: }
 
 
 
 
 
 
 
 
 
 
 

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
   <script type="text/javascript"> 
     jQuery(document).ready(function(){  
        $.ajax({ 
             type: "GET", 
             async: false, 
             //url: "http://test/jsonp.php"
             url:"http://local.ok.com/1.php"
             dataType: "jsonp", 
             jsonp: "callback",//傳遞給請求處理程序或頁面的,用以得到jsonp回調函數名的參數名(通常默認爲:callback) 
             jsonpCallback:"bbb",//自定義的jsonp回調函數名稱,默認爲jQuery自動生成的隨機函數名,也能夠寫"?",jQuery會自動爲你處理數據 
             success: function(json){ 
                 alert('您查詢到航班信息:票價: ' + json.price + ' 元,餘票: ' + json.tickets + ' 張。回調函數名爲: '+json.func); 
             }, 
             error: function(){ 
                 alert("fail"); 
             } 
         }); 
     }); 
     </script>  php

</body>
</html>html

 

 

 

 

 

跨域問題存在實際上源於瀏覽器的同源策略(same origin policy),簡單講,同源就是要求域名,協議,端口三者都一致;java

 

 

 

 

  1. //使用jsonp實現跨全域
  2. RequestAjax_JSONP = function() {  
  3. var obj = $("#crossSitePage");  
  4.      $.getJSON("http://coolkiss.com/CrossSite.jsp?callback=?&t=" + Math.random(), function(data) {  
  5. //alert(data);
  6.            $("#ResponseData").html(data.content);  
  7.         });  
  8.      }
 

 

 

 

一、一個衆所周知的問題,Ajax直接請求普通文件存在跨域無權限訪問的問題,甭管你是靜態頁面、動態網頁、web服務、WCF,只要是跨域請求,一概不許; jquery

二、不過咱們又發現,Web頁面上調用js文件時則不受是否跨域的影響(不只如此,咱們還發現凡是擁有"src"這個屬性的標籤都擁有跨域的能力,好比<script>、<img>、<iframe>); web

三、因而能夠判斷,當前階段若是想經過純web端(ActiveX控件、服務端代理、屬於將來的HTML5之Websocket等方式不算)跨域訪問數據就只有一種可能,那就是在遠程服務器上設法把數據裝進js格式的文件裏,供客戶端調用和進一步處理; ajax

四、恰巧咱們已經知道有一種叫作JSON的純字符數據格式能夠簡潔的描述複雜數據,更妙的是JSON還被js原生支持,因此在客戶端幾乎能夠爲所欲爲的處理這種格式的數據; json

五、這樣子解決方案就呼之欲出了,web客戶端經過與調用腳本如出一轍的方式,來調用跨域服務器上動態生成的js格式文件(通常以JSON爲後綴),顯而易見,服務器之因此要動態生成JSON文件,目的就在於把客戶端須要的數據裝入進去。 跨域

六、客戶端在對JSON文件調用成功以後,也就得到了本身所需的數據,剩下的就是按照本身需求進行處理和展示了,這種獲取遠程數據的方式看起來很是像AJAX,但其實並不同。 瀏覽器

七、爲了便於客戶端使用數據,逐漸造成了一種非正式傳輸協議,人們把它稱做JSONP,該協議的一個要點就是容許用戶傳遞一個callback參數給服務端,而後服務端返回數據時會將這個callback參數做爲函數名來包裹住JSON數據,這樣客戶端就能夠隨意定製本身的函數來自動處理返回數據了。

若是對於callback參數如何使用還有些模糊的話,咱們後面會有具體的實例來說解。

 

 

 

 

上面都是網絡上收集的

簡單點說,解決ajax跨域

一、response.setHeader("Access-Control-Allow-Origin", http://127.0.0.1/*);

二、設置domain

三、jsonp(jsonp就是js動態建立iframe後者script標籤請求服務器,服務器返回的是一個js的可執行回調方法。)

四、經過帶有src屬性字樣的標籤處理,好比,<script><img><iframe>

相關文章
相關標籤/搜索