ajax cross domain

之前有介紹用iframe做跨網域方式,那如果想直接對其他網域發送呢?我們可透過callback的機制,來實現跨網域,簡單來說就是,就是依照參數,include一隻script

例如:
function test( result ){
   alert(result);
}
$.getScript("http://localhost/jsonp.php?callback=test");
jsonp.php
echo $_GET["callback"]."(\"Hello!\")";

 

那如果想直接發送ajax,可透過實作server proxy的方式或直接在server端加入一行header,來加入可以發送網域。(可參考此link)

Access-Control-Allow-Origin:http://localhost/
ajax cross domain範例:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script>
$.get("http://localhost:8080",function(){
    console.log(arguments);
});
</script>
server side(node.js):
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {
        'Content-Type': 'text/plain',
        "Access-Control-Allow-Origin": "http://localhost/"
  }); 
  res.end('Hello World\n');
}).listen(8080, "127.0.0.1");

flash也是透過類似的方式,當發送不同網域的request時,會先在所在網域,去讀取crossdomain.xml。(http://localhost/crossdomain.xml)

<!--?xml version="1.0"?-->
<cross-domain-policy>
<allow-access-from domain="*">
</allow-access-from></cross-domain-policy>