AJAX跨域

AJAX跨域
AJAX不容許跨域訪問。

跨域是指瀏覽器B顯示的是服務器S1的數據,全是從S1取得的數據則是同域;但若是B顯示的S1上的數據的某個好比img是從S2上取得的數據,則是跨域。端口不同也是跨域。跨域不只是跨服務器,仍是跨IP,跨端口。

AJAX經過三種方法,能夠解決跨域問題。

一、設置請求頭,每個路徑裏都要設置,能夠封裝成方法方便調用。
       res.setHeader("Access-Control-Allow-Origin","*");
       res.setHeader("Access-Control-Allow-Methods","GET,POST");
       3000服務器請求跨域到3001,須要在3001裏改寫代碼
       
二、設置代理

三、JSONP  即JSON with padding,script的src能夠提交服務器。本質上jsonp不是AJAX,是採用script繞過了AJAX的跨域問題。

       3001的路由表中,寫:
       router.get('/jsonp',function(req,res){
           res.send("callback('ajax的跨域訪問')");
       });     //這種方法只能get提交
       
       在3000的html中輸入:
       $("img").click(function(){
          $("body").append("<script src='http=//localhost:3001/users/jsonp'><\/script>");    //<\/script>裏的\是轉義符
       });
       
       用ajax實現jsonp
       $.ajax({
          type:"get,
          url:"http://localhost:3001/users/jsonp",
          data:{username:"abcabc"},
          dataType:"jsonp",
          success:function(data){
              console.log(data);
              }
          });
        3001的路由表中,寫:
        router.get('/jsonp',function(req,res){
           res.jsonp("ajax的跨域訪問");
        });html

相關文章
相關標籤/搜索