gpt4 book ai didi

angularjs - 使用 Swagger-js 启用浏览器 cookie

转载 作者:可可西里 更新时间:2023-11-01 17:26:23 24 4
gpt4 key购买 nike

我在 AngularJs SPA 中使用 swagger-js/swagger-client ( https://github.com/swagger-api/swagger-js ) 使用 TryItOut 执行器将 REST 请求发送到 nodeJS 服务器。

我正在使用 PassportJS 进行身份验证。当我使用 Angular 的 $http 服务并将 withCredentials 属性设置为 true 时:

$http({
method: 'GET',
withCredentials: true,
url: 'http://someUrl/someRestPath/' })

,一切正常 - 浏览器 cookie 已正确设置,并且每个进一步的请求都已成功通过身份验证。

切换到 swagger-js Executor,由于未设置 cookie,我无法正确进行身份验证。我尝试了以下方法:

var swaggerClient = new SwaggerClient(specUrl)
.then(function (swaggerClient) {
swaggerClient.http.withCredentials = true; // this activates CORS, if necessary

如文档中所建议,但这没有效果。虽然我在使用护照进行身份验证时会收到凭据,但由于未设置 cookie,因此进一步的请求是未经授权的。

Left: cookies not being sent; Right: cookies being set

如何使用 swagger-js 启用此行为?

最佳答案

我找到了解决方案。 Swagger-js 客户端的 execute 方法允许我们定义自己的 http 方法。我只是使用了 angular 的 $http 服务,在 .config 中将 withCredentials 全局设置为 true

import Swagger from 'swagger-client';

在.config中:

angular.module('app', []).config(['$httpProvider',function ($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}

然后当您创建 swagger 客户端时:

Swagger({ url: 'some swagger specification (yaml/json)' }).then(client => {
client.execute({ http: $http, operationId: operationId, parameters: parameters});

关于angularjs - 使用 Swagger-js 启用浏览器 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com