- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Angular 项目中,我使用的是 HttpClient (@angular/common/http)。我使用 POST、GET 和 DELETE 方法成功地执行了大量 API 请求,始终发送到相同的后端 URL 并包含相同的 header (Bearer Authentication)。一旦我执行 PATCH 请求(相同的 URL,相同的 header ),服务器就会提示“401 未授权”状态。我检查了标题是否与 PATCH 一起正确发送,但事实并非如此。当对请求使用以下代码片段时,我发送的 header 以某种方式设置在 header 的 lazyUpdate 部分(但仅适用于 PATCH。POST、GET、DELETE 工作正常),这是不正确的:
let headers = new HttpHeaders();
headers = headers.
set('content-type', 'application/json').
set('Authorization', 'Bearer <myToken>');
this.httpClient.patch(<my_patch_url>, { 'headers': headers });
另一方面,当使用以下代码时, header 设置正确,但仍然无法识别:
const headers = {
'content-type': 'application/json',
'Authorization': 'Bearer <myToken>')
}
this.httpClient.patch(<my_patch_url>, { 'headers': headers });
因此,除了 PATCH 请求外,一切正常。
有人知道为什么 PATCH 以错误的方式发送 header 吗?
提前致谢。干杯
最佳答案
我自己找到了这个问题的解决方案:
这与您如何添加 header 无关,而是使用 PATCH 方法的请求可能还需要一个反射(reflect)实际应该更新的参数的主体(@param body — 要编辑的资源)。
参见 PATCH 的定义:
(method) HttpClient.patch(url: string, body: any, options?: {
headers?: HttpHeaders | {
[header: string]: string | string[];
};
这个有效:
const headers = {
'content-type': 'application/json',
'Authorization': 'Bearer <myToken>')
}
this.httpClient.patch(patch_url, "", { 'headers': headers });
在我的例子中,正文部分是空的 (""),因为后端不接受任何其他内容。
关于lazyUpdate 中的 Angular HttpClient 补丁 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71779609/
在我的 Angular 项目中,我使用的是 HttpClient (@angular/common/http)。我使用 POST、GET 和 DELETE 方法成功地执行了大量 API 请求,始终发送
我对 HttpHeaders (angular 4.3.0) 和 Karma 有疑问。我编写了一些测试,当我使用 npm test 命令运行它们时,http 查询是未经授权的,因为未设置 token
我有一个问题,即 JWT token 未仅添加到特定 API 的 header 中,我不知道为什么......httpOptions.headers 的内容在每个函数中都不同,您可以在下面的屏幕截图中
我是一名优秀的程序员,十分优秀!