1. 程式人生 > >jquery php json cookie ajax 解決跨域的問題

jquery php json cookie ajax 解決跨域的問題

javascript 做非同步請求的時候, 請求json資料,如果在不同的子域下。

例如: a.example.com 請求b.example.com 的資料,需要增加

<?php

    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);

?>

為了資料安全建議,做判斷

 if (strpos($_SERVER['HTTP_ORIGIN','.example.com')!==false){

   header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);

}


如果需要跨域請求cookie,在client端的javascript 程式碼需要增加

xhrFields: { withCredentials:true }

<script>

$.ajax({
      type: 'POST',
      url: "http://b.example.com/?",
      xhrFields: { withCredentials:true },
      success: function (data){
            console.log(data);
      }

</script>

在伺服器端的頭資訊需要返回

Access-Control-Allow-Credentials: true 

使用php程式碼為

    <?php

    header("Access-Control-Allow-Credentials: true");

    //且返回的cookie需要增加上級域名

    setcookie('user','yubing', time()+86400,'/','example.com');

  ?>