Прежде всего позвольте мне сказать, что я прошел через все похожие должности, но ничто не решает мою проблему. Я также исключил, что серверная сторона не виновата, так как я получаю правильные заголовки ответов, по крайней мере, как показано в Fiddler и в инструментах Chrome Dev.Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому исходный URL-адрес вызова не разрешен.
Я использую Thinktecture.IdentityModel и сделал проверку подлинности на стороне клиента с помощью JQuery, как это:
$.ajax({
url: tokenEndpoint,
type: 'GET',
// jsonp is not an option and it does not work anyway with my server setup
dataType: "json", // including this does not help
crossDomain: true, // including this does not help
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic xxxxx');
},
success: function() {
alert('success!');
},
error: function(xhr, errorType, exception) {
}
});
Вот след, который я получил:
* предполетной запрос CORS *
OPTIONS http://HOST_DOMAIN/tokenEndPoint HTTP/1.1
Host: HOST_DOMAIN
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://ORIGIN_DOMAIN
Access-Control-Request-Headers: accept, authorization
Accept: */*
Referer: http://ORIGIN_DOMAIN/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
предполетный ответ
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Access-Control-Allow-Origin: http://ORIGIN_DOMAIN
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: accept,authorization
Content-Length: 15
{"status":"ok"}
фактический запрос AJAX
GET http://HOST_DOMAIN/tokenEndPoint HTTP/1.1
Host: HOST_DOMAIN
Connection: keep-alive
Accept: */*
Origin: http://ORIGIN_DOMAIN
Authorization: Basic xxxxx
Referer: http://ORIGIN_DOMAIN/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
AJAX ответ
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 560
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
Set-Cookie: xxxxx
{
"access_token": "xxxxx",
"expires_in": xxx
}
Обратите внимание на последнюю строку трассы, которая исходит из TextView на вкладке Скрипач, что указывает на то, вызов сервера был успешным. Я могу подтвердить, что вызов сервера был успешным, когда я отлаживал код на стороне сервера, и код, который возвращает этот вывод, был достигнут и не выдавал никаких ошибок. Любые идеи, как заставить его работать?
Я бы установил, что ваши домены разрешены к DNS-именам, которые вы ожидаете. –