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');
?>