ANGULAR 没有向我的特定 Http Post 请求发送标头

Posted

技术标签:

【中文标题】ANGULAR 没有向我的特定 Http Post 请求发送标头【英文标题】:ANGULAR isn't sending headers to my particular Http Post Request 【发布时间】:2019-01-19 16:37:34 【问题描述】:

这是一个向我的服务器发送 http post 请求的函数

 likePost(post)
    let head = new Headers('Content-Type': 'application/json',
    "Authorization":"JWT "+localStorage.getItem("token")
  );
  let requestOptions = new RequestOptions(headers: head);
  this.http.post(this.likeurl+post.id+'/like',requestOptions)
    .subscribe((response)=>
      console.log(response);
);

但是当我启动这个功能时,我会收到来自服务器的 403 禁止请求,说你没有经过身份验证

这个问题太有趣了,因为我所有的 crud 操作都可以正常工作,并且将相同的标头发送到服务器 但此函数无法向服务器发出请求

这是我在服务器中创建对象的帖子要求

 createPost(input:htmlInputElement)
    // input.value='';
    let post=content:input.value;
  let head = new Headers( 'Content-Type': 'application/json',
  "Authorization":"JWT "+localStorage.getItem("token")

);
  let requestOptions = new RequestOptions(headers: head);
    let body = JSON.stringify(post);

    this.http.post(this.url,body,requestOptions)
      .subscribe(response =>
        post['id']=response.json().id;
        this.posts.splice(0,0,post);


      );

这样,所有的 crud 操作都与我的授权标头完全同步,但这种类似的功能不是 我不明白问题是什么以及如何解决 试图观察我是否编码错误,但一切似乎都很好

【问题讨论】:

【参考方案1】:

您可以检查的几件事:

确保令牌在该特定状态下具有价值 验证特定 API 是否真的捕获了该令牌

还有一点需要考虑,您应该使用Angular Interceptor 来执行此操作。

您在这里复制代码,在您将执行的每个 http 请求方法上添加标头。 This 应该可以帮助您做到这一点。

【讨论】:

token 具有价值,我使用邮递员检查了它,我可以得出结论,我可以使用该令牌发出有效请求,并且我还提到所有其他 crud 视图使用相同的令牌都可以正常工作,并且没有问题,我已经尝试过 angular interoceptor,但是当每个 crud 操作都与这些标头完美配合时,这没有任何意义,那么这个函数也应该同样工作

以上是关于ANGULAR 没有向我的特定 Http Post 请求发送标头的主要内容,如果未能解决你的问题,请参考以下文章

Angular - 每个请求都被 CORS 阻止

POST 到 Angular/Tomcat 的 403 状态码

从 Angular 2 客户端到 Node.js 服务器的 HTTP POST 请求

Angular $http 未在 OPTIONS 飞行前发送标头

通过 Angular JS $http.post 使用 slim 框架时出现 404 无效的 http 状态代码

Angular2 http post没有将json对象传递给MVC 6控制器动作