PHP下ajax跨域的解決方案之CORS


由於安全的限制(同源策略,javascript只能訪問同域名下的內容),如果需要進行跨域操作,那就免不了要進行跨域。
 
CORS(跨域資源共享,Cross-Origin Resource Sharing)是一種解決跨域的方案。
詳細的描述還請查閱:
http://www.w3.org/TR/cors/
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
 
比如我有兩個虛擬主機(apache本地配置),www.a.com和www.b.com
現在b.com上要獲取a.com的登陸信息,比如用戶ID,用戶名等。
 
在www.b.com的index.php如下:
<!doctype html>
<html lang="zh-cn">
<head>
	<meta charset="UTF-8" />
	<title></title>
</head>
<body>
	<div class="userInfo"></div>
</body>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
	var url = "http://www.a.com/index.php";
	$.get(url, {a : "getUserInfo"}, function(data) {
		$(".userInfo").text("Id:" + data.uid + " Name:" + data.name);
	}, "json");
</script>
</html>
在www.a.com的index.php如下:
<?php
$a = !empty($_GET['a']) ? trim($_GET['a']) : ''; 

if($a == 'getUserInfo') {
    echo json_encode(array(
        'uid' => 1,
        'name' => '測試',
    ));
} else {
    echo '';
}
在b.com的index.php中用jquery的get方法來發送請求,正常情況下會失敗。
PHP下ajax跨域的解決方案之CORS - 懷素真 - 因上努力 果上隨緣
那么我們只需要在a.com的index.php中添加如下代碼,則b.com就可訪問。
header('Access-Control-Allow-Origin: *');
訪問結果如下:
Id:1 Name:測試
當然我們也可以指定可以訪問的域名。
header('Access-Control-Allow-Origin: http://www.b.com');
 CORS瀏覽器的支持情況如下圖:
PHP下ajax跨域的解決方案之CORS - 懷素真 - 因上努力 果上隨緣
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM