Я использую AutoRest для генерации клиента Typescript для RESTful API на основе файла спецификации OpenAPI, например:
autorest --typescript --use-internal-constructors --override-client-name=MyApiClient --input-file=API.Swagger.json --namespace=MyApi.Client --typescript.output-folder=C:\One\ts --add-credentials=true
Когда я звоню с использованием сгенерированного клиента API через CORS, это нене включает файлы cookie.
JavaScript fetch
предоставляет эту конструкцию для включения файлов cookie:
fetch(uri, { credentials: 'include' })
Но я не мог придумать, как это сделать с помощью сгенерированного AutoRest APIклиент. Я просмотрел msRest.ts
, чтобы посмотреть, смогу ли я использовать любой из доступных типов учетных данных.
[Обновление]:
После дальнейшего изучения я понял, что у параметра параметров для клиента есть свойство withCredentials
, который может быть установлен в true. В конце концов, node_modules\@azure\ms-rest-js\es\lib\xhrHttpClient.js
делает вызов API. В частности, эта линия выполняет вызов:
xhr.send(request.body === undefined ? null : request.body);
Я тщательно отладил и убедился, что для withCredentials
установлено значение true
, но по какой-то причине он не отправляет файлы cookie! Если я звоню с использованием javascript fetch
, он отправляет файлы cookie, а клиент, сгенерированный с помощью функции автоматического восстановления, не отправляет файлы cookie!