запросить ответное изображение Я использую токен jwt в asp. net web api 2 и пытаюсь отправить обратно токен jwt, разделенный на полезную нагрузку двух файлов cookie (срок действия), подпись (HttpOnly, сессия) после входа пользователя в систему.
Web Api Controller:
var resp = new HttpResponseMessage();
var value = TokenManager.GenerateTokenForUser(user);
string[] arr = value.Token.Split('.');
string headerandpayload = arr[0]+"."+arr[1];
string sign = arr[2];
var payload = new CookieHeaderValue("payload", headerandpayload);
payload.Expires = DateTimeOffset.Now.AddMinutes(10);
payload.Domain = Request.RequestUri.Host;
payload.Secure = false;
payload.Path = "/";
var signature = new CookieHeaderValue("signature", sign);
signature.HttpOnly = true;
signature.Domain = Request.RequestUri.Host;
payload.Secure = false;
signature.Path = "/";
resp.Headers.AddCookies(new CookieHeaderValue[] { payload,signature });
return resp;
Web api config:
var cors = new EnableCorsAttribute("http://localhost:65392", "*","*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
JS of site hosted in different domain or port:
$('#login').click(function () {
$.ajax({
type: 'get',
url: loginurl,
xhrFields: { withCredentials: true },
}).done(function (output, status, xhr) {
console.log(document.cookie);
}).fail(function (error) {
console.log(error);
});
});
полезной нагрузки cook ie предназначен для доступа клиента (SPA), в данном случае asp. net MVC (jquery в поле зрения).
Но проблема, с которой я сталкиваюсь, заключается в том, что при размещении проекта webapi на iis-сервере после входа в систему в настройках ответа указывается значение ie. Set-Cook ie также отправляет в заголовке команду cook ie. 'Cook ie' в последующих запросах и возвращает аутентифицированный результат, но он действительно показывает cook ie в хранилище браузера и не может быть доступен для JavaScript (не httponly) cook ie
This работает совершенно нормально при запуске обоих проектов вместе в iis express из VS2019, где оба URL-адреса являются localhost: 8782, localhost: 7212 (отличается только по номеру порта №). Здесь я вижу его в хранилище браузера также можно получить доступ повар ie