Проблема
У меня есть страница, которая генерируется полностью через JavaScript .Я получаю содержимое, запрашивая данные из сценария PHP на поддомене (ajx.example.com)
, а затем возвращаю его в формате JSON .
Одно из требований для этогоопределенная страница должна быть «редактируемой», если пользователь вошел в систему (что является одним из ключей в JSON , "isEditable":true
). Если я захожу на страницу запроса (на поддомене) напрямую, ипользователь вошел в систему (в основном домене), isEditable
- это всегда true
. Однако, если я запрашиваю его через Ajax-запрос, это всегда false
.
Эти поддомены создаются через VirtualHost на MAMP , и все они указывают на один и тот же каталог.
www.example.com
находится в htdocs/example
,
ajx.example.com
-в htdocs/example/ajax
, а
v1.examplecdn.com
в htdocs/example/cdn
.
Код
Вот страница init (www.example.com/app/init.php
:
ini_set("session.cookie_domain", ".example.com"); // make sure all sessions are available on all subdomains
error_reporting(E_ALL);
session_start();
// I include the user class here
Вот страница запроса (ajx.example.com/request.php
):
require_once "../app/init.php"; // (/htdocs/example/app/init.php)
header("Content-type: application/json;charset=utf-8", false);
header("Access-Control-Allow-Origin: http://www.example.com", false);
$user = new User();
$editable = false;
if($user->loggedIn()){ // check if user is logged in (this is stored in a session on .example.com
$editable = true;
}
die(json_encode(array("isEditable" => $editable)));
А вот запрос Ajax (* 1056)*):
var container = document.getElementById("container");
ajax({
url: "//ajx.example.com/request.php", // (/htdocs/example/ajax/request.php)
dataType: "json",
success: function(res){
if(res.isEditable){
console.log("editable"); // this doesn't come through as isEditable is false.
}
}
});
Запрос
Если кто-тоn указывает мне, как сделать так, чтобы к этим сеансам PHP можно было получить доступ через эти субдомены, это было бы очень приветствуется!
Cheers.