javascript跨域無需修改服務器端

1.圖像pingjavascript

因爲img標籤能夠跨域,所以在onload和onerror事件中能夠請求跨域,只能get請求,沒法訪問服務器的響應文本,只能用於單向通訊。php

var img=new Image();
img.onload=img.onerror=function(){
alert("done!");
};
img.src="http://www.example.com/test?name=nicholas";

2.jsonpjava

兩部分:url和回調;在地址中指定callback。如:http//freegeoip.net/json/?callback=handleResponseweb

function handleResponse(response){
alert("your IP address "+response.ip);
}

var script=document.createElement("script");
script.src="http://freeoip.net/json/?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);

3.cometjson

客戶端請求,服務端有數據時才返回,返回後關閉鏈接,即長輪詢跨域

4.服務器發送事件SSE(server-sent events)服務器

var source=new EventSource("myevents.php");socket

source.onmessage=function(event){jsonp

var data=event.data;url

}

source.close();

5.web sockets雙向通信,如聊天室

var socket=new WebSocket("ws://www.example.com/server.php");

socket.close();

 

 

 

 

 

參考資料:《javascript高級程序設計》第3版,其餘跨域技術章節

相關文章
相關標籤/搜索