我正在使用AutoRest为基于 OpenAPI 规范文件的 RESTful API 生成 Typescript 客户端,如下所示:
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
当我通过 CORS 使用生成的 API 客户端进行调用时,它不包含任何 Cookie。
JavaScriptfetch
提供了这个结构来包含 cookie:
fetch(uri, { credentials: 'include' })
但是我想不出一种方法来使用 AutoRest 生成的 API 客户端来实现它。我确实查看msRest.ts
了是否可以使用任何可用的凭据类型。
[更新]:
在进一步挖掘之后,我发现客户端的 options 参数有一个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,而 autorest 生成的客户端不会发送 cookie!