我正在使用AutoRest为RESTful应用编程接口生成基于OpenAPI规范文件的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。
JavaScript fetch
提供此构造以包含cookies:
fetch(uri, { credentials: 'include' })
但是我想不出使用AutoRest生成的应用程序接口客户端的方法。我确实查看了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
进行调用,它会发送cookies,而自动生成的客户端不会发送cookies!
发布于 2019-10-02 22:28:48
您可能想尝试一下OpenAPI Generator,它同时支持OpenAPI/Swagger v2和v3。(只有OpenAPI规范v3支持cookie参数)。
我记得我们已经向TypeScript生成器添加了cookie参数支持。如果您需要OpenAPI生成器社区的帮助,请打开ticket/issue。
https://stackoverflow.com/questions/58194829
复制相似问题