我设置了一个在ServiceStack
上运行的port 5001
应用程序
使用ServiceStack的打字稿客户端(使用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"}}
}
// ...
我可以成功在浏览器控制台上看到标头返回
当我检查“获取响应”标头时,我仅看到Content-Type
作为标头,并且状态代码为200
如何添加一个ResponseFilter来捕获实际的GET / POST / PUT / DELETE请求?
答案 0 :(得分:2)
我需要在cors功能中公开“ X-Navigate-To”标题
appHost.LoadPlugin
(
new CorsFeature
(
allowCredentials: true,
allowOriginWhitelist: new List<string> {"https://localhost:4200"},
allowedHeaders: "Content-Type,Authorization",
exposeHeaders: "X-Navigate-To"
)
);