Angular在发送之前获取原始http请求

Posted

技术标签:

【中文标题】Angular在发送之前获取原始http请求【英文标题】:Angular get raw http request before sending 【发布时间】:2019-09-27 11:23:07 【问题描述】:

我正在尝试在将 HTTP 请求发送到服务器之前获取它们。

我的第一次尝试是像这样写一个 HttpIntercepter

@Injectable()
export class HttpLoggingInterceptorProvider implements HttpInterceptor

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>
  
    console.log('Request To Be Logged:');
    console.dir(req);

    if(req.body)
    
      try
      
        let formData = <FormData>req.body;

        if(formData.has('id_front'))
          console.log(formData.get('id_front'));

        if(formData.has('id_back'))
          console.log(formData.get('id_back'));
      
      catch(err)
      

      
    


    return next.handle(req);
  

这很好用,但不是我想要的。我想将最终的组合请求作为原始文本而不是对象。

此刻控制台输出looks like this

如您所见,我没有从中获得任何信息。我看不到设置了多少或设置了哪些值。

但是当我以编程方式请求正文的内容时,我可以获得如下值:

let formData = <FormData>req.body;

        if(formData.has('id_front'))
          console.log(formData.get('id_front'));

        if(formData.has('id_back'))
          console.log(formData.get('id_back'));

至少我知道身体中存在一些东西,除了 FormData 的类型......

我的问题

如何获取将发送到服务器的原始组合请求?

【问题讨论】:

为什么不直接打开浏览器开发工具的网络面板?浏览器已经提供了该信息,无需编写任何代码。 @JBNizet 从中创建一个答案,您将获得投票 => 它有效 :) 【参考方案1】:

你可能会这样做

console.log(JSON.stringify(req.body))

【讨论】:

【参考方案2】:

那是因为“try”块是在其他所有内容之后执行的。 Angular http 请求总是在其他请求之后执行,因此您必须从那里获取数据或以其他方式执行此操作

【讨论】:

以上是关于Angular在发送之前获取原始http请求的主要内容,如果未能解决你的问题,请参考以下文章

Java利用原始HttpURLConnection发送http请求数据小结

休息模板 - 如何在发送之前检索原始 POST 请求字符串 [重复]

令牌拦截器不再发送原始请求(Angular、Node.js)

angular 自定义服务封装自定义http请求

从 Angular 向 Asp.net 发送 post 请求时出现错误 405

使用带有 JWT Auth/Laravel 的 Angular JS 获取新的刷新令牌后,如何恢复/重新发送请求?