ServerStack TypeScript JsonServiceClient COR Проблема - PullRequest
1 голос
/ 14 апреля 2020

Я использую ServiceStack TypeScript Client "JsonServiceClient" в моем приложении. При нажатии кнопки я пишу эти строки кода.

let client:JsonServiceClient = new JsonServiceClient('http://ams-device-int.azurewebsites.net/');
client.setCredentials('testacc', 'Tes@2020');
client.get('/SourceDevice?Take=10').then((r) => {
  debugger;
});

Когда этот код был выполнен, у меня возникла проблема с CORS в консоли разработчика.

Доступ к выборке в ' http://ams-device-int.azurewebsites.net/SourceDevice?Take=10 'из источника' http://localhost: 8080 'было заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: значение' Access ' Заголовок -Control-Allow-Origin 'в ответе не должен быть подстановочным знаком' * ', если режим учетных данных запроса' include '.

Я уже проверил с разработчиком службы, и CORS включил уже на всех началах, и на самом деле у нас есть веб-приложение, работающее с кодом AngularJS, и я использую $ http там, и оно работает нормально без каких-либо проблем. Я думаю, что я что-то упустил в этом JsonServiceClient, и он не отправляет правильные учетные данные, которые вызывают проблему.

С другой стороны, у меня есть этот код

const response = await fetch('http://ams-device-int.azurewebsites.net/SourceDevice?Take=10', {
    method: 'GET', // *GET, POST, PUT, DELETE, etc.
    //mode: 'same-origin', // no-cors, *cors, same-origin
    cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
    //credentials: 'include', // include, *same-origin, omit
    headers: {
        'Content-Type': 'application/json',
        "Authorization": `Basic ${btoa('testacc:Tes@2020')}`
        // 'Content-Type': 'application/x-www-form-urlencoded',
    },
});
let res = await response.json();

, и это работает нормально. Пожалуйста, помогите мне с тем, что я делаю ошибку.

С уважением, Джамиль

1 Ответ

1 голос
/ 14 апреля 2020

Не похоже, что сервер перекрестного происхождения поддерживает файлы cookie, вы можете изменить режим, чтобы использовать то, что использует ваши существующие запросы ajax, например:

let client = new JsonServiceClient(baseUrl);
client.credentials = 'omit';
client.mode = ‘cors’;
client.headers.set("Authorization",`Basic ${btoa('testacc:Tes@2020')}`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...