Я хочу получить доступ к данным из междоменного домена в веб-интерфейсе.У меня есть три сайта: a.com, b.com и c.com.Сайт a.com является внешним.Сайт b.com является бэкэндом (API).C.com - это сервер CAS.
Я могу получить прямой доступ к http://b.com/example_test.php в браузере.Это успешно перейти на страницу CAS для входа в систему.Затем после входа API возвращает данные.
Я хочу разрешить a.com получать данные b.com.Мой код:
Мой интерфейс html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<title>Title</title>
</head>
<body>
<h3 id="article_title"></h3>
<p id="article_text"></p>
</body>
<script type="application/javascript">
var xmlHttpReq = null;
if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
if (xmlHttpReq !== null) {
xmlHttpReq.open("get", "http://b.com/example_test.php");
xmlHttpReq.timeout = 10000;
xmlHttpReq.send("");
xmlHttpReq.onreadystatechange = doResult;
}
function doResult() {
if (xmlHttpReq.readyState === 4) {
console.log(xmlHttpReq.status);
if (xmlHttpReq.status === 200) {
var data = xmlHttpReq.responseText;
var json_data = JSON.parse(data);
/**
do somethin.
*/
}
}
}
</script>
</html>
Мой бэкэнд api example_test.php:
<?php
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS');
header('Access-Control-Allow-Headers:Origin,Content-Type,Authorization,X-auth-Token');
require_once './MyCAS.php';
$resp = array(
'stats' => -1,
'msg' => 'Empty!'
);
if (array_key_exists('username', $_COOKIE)) {
/**
do something
**/
} else {
phpCAS::client(CAS_VERSION_2_0, "mycase.server.com", 443, "/cas", false);
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();
if (phpCAS::isAuthenticated()) {
$username = phpCAS::getUser();
if ($username !== null) {
$token = md5($username.date('s', time()).date('i', time()));
setcookie('username', $username, time() + 1*86400, '/');
setcookie('token', $token, time() + 1*86400, '/');
/**
do something
**/
}
}
}
?>
Но когда я захожу на a.com в браузере, яон не переходит на страницу CAS.Я не понимаю проблемы.Может ли кто-нибудь помочь мне решить эту проблему?