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 请求发送标头的主要内容,如果未能解决你的问题,请参考以下文章
POST 到 Angular/Tomcat 的 403 状态码
从 Angular 2 客户端到 Node.js 服务器的 HTTP POST 请求
Angular $http 未在 OPTIONS 飞行前发送标头