gpt4 book ai didi

typescript - ServiceStack - 无法从 Typescript 客户端 ResponseFilter 中获取 header

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:19 24 4
gpt4 key购买 nike

我设置了一个在 5001 端口上运行的 ServiceStack 应用程序

使用 ServiceStack 的 typescript 客户端(使用 typescript-ref),我生成了 dtos

我需要拦截响应,因为有时我的服务器会将客户端重定向到另一个页面。但是我不能用标准的 XHR 重定向来做到这一点,我需要用一个 HTTP 拦截器(类似于 angular 的)来做到这一点

我设置了一个有角度的 JsonServiceClient

import { Injectable } from '@angular/core';
import { JsonServiceClient } from '@servicestack/client';
import { Router } from '@angular/router';

@Injectable({
providedIn: 'root',
})
export class ServiceClient extends JsonServiceClient {
constructor(router: Router) {
super('https://localhost:5001');
this.responseFilter = res => {
const navigateTo = res.headers.get('X-Navigate-To');
if (!navigateTo) {
return;
}
router.navigateByUrl(navigateTo);
};
}
}

// client.responseFilter is triggered successfully, but the Response.headers does not contain the headers sent by the service. Only `content-type: application-json`

在我的服务中,我添加了一个请求头

 // ...
return new HttpResponse(HttpStatusCode.NoContent){
Headers = {{"X-Navigate-To", "/home/whathever"}}
}
// ...

我可以在浏览器控制台上成功看到返回的 header

当我检查 Fetch Response header 时,我只看到 Content-Type 作为 header ,状态代码为 200

我如何添加一个 ResponseFilter 来捕获实际的 GET/POST/PUT/DELETE 请求?

最佳答案

我需要在 cors 功能中公开“X-Navigate-To” header

        appHost.LoadPlugin
(
new CorsFeature
(
allowCredentials: true,
allowOriginWhitelist: new List<string> {"https://localhost:4200"},
allowedHeaders: "Content-Type,Authorization",
exposeHeaders: "X-Navigate-To"
)
);

关于typescript - ServiceStack - 无法从 Typescript 客户端 ResponseFilter 中获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56100997/

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