当前位置: 首页 > 知识库问答 >
问题:

angular 5 httpclient,在post上,响应不返回自定义头,只返回响应对象

陆卓
2023-03-14

我没有得到实际的超文本传输协议标头时,使超文本传输协议后调用使用角5公共http pClient.我在请求中传递观察:'响应'以获得完整的响应(默认情况下,http客户端仅返回响应中的正文)。

我想从http头响应中读取csrftoken值。我可以看到csrftoken在使用chrome浏览器网络视图的响应头中可用。

但是当我在Angular中阅读httpClient响应时,这一点是不可用的。

 post(inURL, data, config = undefined) {
    let headers, options;
    if (config){
        options = config;
    } else {
        //headers = this.getDefaultHeader();
        //options = new RequestOptions({ headers: headers });
        options = httpOptions;
    }
    options = { ...options, observe: 'response' };

    let action = this.httpService.post(inURL, data, options);
    return new Promise((resolve, reject) => {
        action.subscribe(
            response => resolve(response),
            error => {
                this.interceptError(error);
                reject(error);
            }
        );
    });

在chrome调试器上调试时,response headers对象看起来是这样的,因为您看到csrftoken在response对象上不能作为键使用

下面是我访问HttpHeader的方法

   let headers: HttpHeaders = response.headers;
    if (headers && headers['csrftoken']) {
        let token: String = headers.get('csrftoken');
    }

共有1个答案

养慈
2023-03-14

正如在评论中已经建议的那样,您无法检查标题是否存在。您需要使用has方法。您的代码应该如下所示:

let headers: HttpHeaders = response.headers;
if (headers && headers.has('csrftoken')) {
   let token: String = headers.get('csrftoken');
}
 类似资料:
  • 我正在尝试使用Go语言向我的(magento)网络服务器发出请求。 我设法发出了一个POST请求,但是,我没有得到与从cmd使用CURL时相同的响应。我关注了这篇文章(如何在Golang中获取JSON响应),它没有给我任何响应。 所以我试了这个 这只是像这样返回http响应 当使用< code > curl-g-X POST " my . dev/index . PHP/rest/V1/guest

  • 问题内容: 我已经按照以下Flask-RESTful文档定义了自定义响应格式。 我有以下资源类。 我希望函数返回类型,函数返回默认值。 我该怎么做呢?关于这一点,文档不是很清楚。 问题答案: 使用哪种表示方式取决于request,标头类型。 的请求通过使用你的函数来响应。 如果你需要API方法中的特定响应类型,则必须使用返回“预烘焙”响应对象:

  • 本文向大家介绍symfony2 返回404响应,包括了symfony2 返回404响应的使用技巧和注意事项,需要的朋友参考一下 示例 当在服务器上找不到资源时,将返回404响应。在Symfony中,可以通过引发NotFoundHttpException异常来创建此状态。为了避免use在控制器内部添加多余的语句,请使用类createNotFoundException()提供的Controller  

  • 我想使用GooglePlaceAPI和自动完成视图。我有开发者控制台上的android和浏览器密钥。但当我尝试这些键API时,它返回空响应。 Logcat: D/Volley:[2651]a.a:请求的HTTP响应= 我的代码: 在onpostexecute日志中: 我是新来的google地方api,请帮我找到什么是错误的。

  • 有很多使用OkHTTP3发出请求的例子,但是,我仍然无法发出正确的请求。据我所知,我的设置是正确的。 我不断收到如下所示的回复。我不知道他们是什么意思。 {“ContentLength”:238,“ContentTypeString”:“Application/JSON”,“Source”:{“Buffer”:{“Size”:0},“Closed”:False,“Source”:{“BytesRe

  • 使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png