У меня есть запрос на совместное использование ресурсов CORS (перекрестный источник), поступающий с моей страницы входа на сайт приложения на другом URL-адресе. У меня есть простая страница ping для определения того, был ли пользователь уже зарегистрирован и если да, перенаправляет их. В противном случае я покажу страницу входа. Я использую jQuery.
Это отлично работает в сафари, хром, firefox... и не IE (естественно). Согласно MS, IE 10 и более поздние версии должны поддерживать запросы CORS с withCredentials
Я использую jquery-2.0.3.min.js
Любые идеи, почему это не работает в IE11?
EDIT: Кажется, что он частично работает, так как теперь он возвращает значение { "id": false}. Это происходит каждый раз, что означает, что сервер никогда не получает учетные данные. Я также размещаю мою страницу is_logged_in, я использую фреймворк кода.
EDIT: после включения "Разрешить источники данных в доменах" в настройках безопасности IE, я больше не получаю сообщений об ошибках.
Точная ошибка, которую я получаю:
SEC7118: XMLHttpRequest для http://mysite.net/guest/is_logged_in требуется перекрестный поиск ресурсов (CORS).
$.ajax({
url: 'http://mysite.net/guest/is_logged_in',
type: 'POST',
crossDomain: true,
xhrFields: {
withCredentials: true
},
dataType: 'json',
success: function(data) {
if(data.id) {
window.location.replace("http://mysite.net");
}
}
});
и
public function is_logged_in()
{
$allowed = array(
'http://mysite.net',
'http://www.mysite.net',
'http://www.mysite.com',
);
$url = $_SERVER['HTTP_REFERER'];
$url = substr($url, 0, strpos($url, '/', 8));
if(isset($_SERVER['HTTP_ORIGIN']))
{
if(in_array($_SERVER['HTTP_ORIGIN'], $allowed))
{
$this->output->set_header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
}
}
else
{
if(in_array($url, $allowed))
{
$this->output->set_header('Access-Control-Allow-Origin: ' . $url);
}
}
$this->output->set_header('Access-Control-Allow-Headers: X-Requested-With');
$this->output->set_header('Access-Control-Allow-Credentials: true');
$this->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
//TODO: Try to detect if this is an ajax request, and disallow it if not.
$data = new stdClass();
$this->load->library("ion_auth");
if($this->ion_auth->logged_in())
{
$data->name = $this->ion_auth->user()->row()->first_name;
$data->id = $this->ion_auth->get_user_id();
} else {
$data->id = false;
}
$this->output->set_output(json_encode($data));
}
Заранее спасибо