lazyUpdate 中的 Angular HttpClient 补丁标头

2024-01-03

在我的 Angular 项目中,我使用 HttpClient (@angular/common/http)。 我成功地使用 POST、GET 和 DELETE 方法执行了大量 API 请求,始终发送到相同的后端 URL,并包含相同的标头(不记名身份验证)。 一旦我执行 PATCH 请求(相同的 URL、相同的标头),服务器就会抱怨“401 未经授权”状态。 我检查了标头是否与补丁一起正确发送,但事实并非如此。 当使用以下代码片段作为请求时,我发送的标头以某种方式设置在标头的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 });

另一方面,当使用以下代码时,标头设置正确,但仍然无法识别:

const headers = {
      'content-type': 'application/json',
      'Authorization': 'Bearer <myToken>')
    }

this.httpClient.patch(<my_patch_url>, { 'headers': headers });

所以除了 PATCH 请求之外,它工作得很好。

有人知道为什么 PATCH 以错误的方式发送标头吗?

提前致谢。 干杯


我自己找到了解决这个问题的方法:

这与如何添加标头无关,而是使用 PATCH 方法的请求可能还需要一个反映实际应更新的参数的正文(@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 });

在我的例子中,主体部分是空的(“”),因为后端不接受其他任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lazyUpdate 中的 Angular HttpClient 补丁标头 的相关文章

随机推荐

  • 如何将系统时间格式化为字符串?

    看来我已经没有办法转了SystemTime成字符串 我必须使用SystemTime因为我需要从返回的值std fs Metadata created 您应该使用 Chrono 来获取格式支持 从 Chrono v0 4 0 开始 这变得更加
  • Android Studio 说“局部变量是多余的”[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我收到关于许多方法的警告local variable is redundant 这是一个示例方法 public MyObject getMSLi
  • SQL:如何使存储过程中的表名动态化

    我对 SQL Server 还很陌生 希望这里有人可以帮助我 我正在使用 QL Server 2008 以下是一个按预期工作的小过程 现在我想使用相同的过程来更新多个表 因为所有这些表都具有完全相同的列名称和列格式 唯一的区别是我添加的表名
  • wxWidgets 的间距/空边框

    有什么东西可以用来在窗口边缘或 wxWidgets wxPython 组件之间添加空间吗 我想要一些东西来防止组件被窗口边框或彼此挤压 类似于 Java Swing 的 EmptyBorder 或 Insets 可以完成的操作 我知道您可以
  • 如何从 Git 远程存储库中删除已删除的文件夹?

    我从本地 Git 存储库中删除了一个文件夹 然后我提交并将更改推送到远程存储库 文件被删除 但文件夹和子文件夹仍然存在 如何从远程存储库中删除空文件夹 您可以通过调用以下命令强制 git 停止跟踪本地文件 git rm file txt w
  • 在 Silverlight 3/4 中加载 3D 对象

    是否可以在 Silverlight 3 或 Silverlight 4 应用程序中加载 3D 对象 3DS Max 对象或其他格式 除了加载对象之外 我还需要一些基本的交互 简单的旋转 放大 缩小 我认为托管 3D 引擎Balder htt
  • 如何在 PHP 中设置使用 HttpOnly cookie

    我怎样才能在我的PHP apps as HttpOnly cookies 对于 Apache 上的 PHP 自己的会话 cookie 将其添加到您的 Apache 配置中或 htaccess
  • 在 C# 中使用另一个方法中的变量

    我是 C 编程新手 非常缺乏经验 我正在创建一个带有文本框的表单 我希望我的程序在一个方法中读取该框中的数字 并在另一个方法中使用这些数字执行操作 现在的情况是这样的 public void readG TextChanged object
  • 奇怪:找不到 C# 类型或命名空间名称 - 构建成功

    当我的项目在 VS2012 IDE 中打开时 我的项目中出现了一个奇怪的错误 在我使用另一个引用项目的地方 它突然说 Type or Namespace name could not be found 我所说的 说 是指当我将鼠标悬停在它上
  • Scanf 获取数字

    我是 C 语言新手 我有一个关于 scanf 的数字问题 我需要做的是 scanf 输入仅 3 位数字 其他字符或符号应被评估为垃圾 或者也许我需要使用isdigit 但我不确定它是如何工作的 我只有这个 但我知道它不起作用 scanf d
  • jQuery 在 LinkBut​​ton 上调用 __doPostBack

    我有一个 LinkBut ton 需要单击它才能引起回发 实际的链接目标是 javascript doPostBack ctl00 c1 btnRefreshGrid 单击该链接确实会执行回发 正如代码隐藏中的断点所验证的那样 还贴java
  • 什么是textViewResourceId?

    我一直在尝试弄清楚如何使用 ArrayAdapter 类 并从文档中获取 http developer android com reference android widget ArrayAdapter html http develope
  • 如何使用 Magical Record 创建和更新对象并保存它们而不使用 contextForCurrentThread

    我刚刚读了 MagicalRecord 的作者的博客文章为什么 contextForCurrentThread 在 MagicalRecord 中不起作用 http saulmora com 2013 09 15 why contextfo
  • 将 Glade 文件中的小部件添加到 Python 中 gtk.Window 的子类中。如何?

    我使用 Glade 制作了一个界面 然后我想在 Python 中创建 gtk Window 的子类并将该文件传递给它 然后我希望能够使用在 Glade 中添加的小部件 就像使用常规代码创建它们一样 这是我非常想做的事情 class Main
  • 在调用函数时不熟悉方括号的使用

    在这中间page http hangar runway7 net javascript guide 我找到下面的代码 var plus function x y return x y var minus function x y retur
  • 检索 Mac 上的 RAM 信息?

    我需要检索系统中存在的 RAM 总量以及当前正在使用的 RAM 总量 以便我可以计算百分比 这类似于 检索 MacOS X 上的系统信息 https stackoverflow com questions 8736713 retrieve
  • Devise + Omniauth Facebook 重定向至注册

    我已按照此指南进行操作https github com plataformatec devise wiki OmniAuth 概述 https github com plataformatec devise wiki OmniAuth Ov
  • Ruby 函数调用的括号的主要风格是什么?

    说我有func a and func b两者都采用一个参数 我想传递结果func b to func a 添加括号的最常见方法是什么 func a func b input func a func b input func a func b
  • Rails + Dalli memcache gem:DalliError:没有可用的服务器

    您好 我在服务器上设置 Rails 项目时遇到问题 因为 apache 不断抱怨 DalliError No server available 我安装了memcached在我的 ubuntu 机器上 但它仍然不起作用 我的 Rails 项目
  • lazyUpdate 中的 Angular HttpClient 补丁标头

    在我的 Angular 项目中 我使用 HttpClient angular common http 我成功地使用 POST GET 和 DELETE 方法执行了大量 API 请求 始终发送到相同的后端 URL 并包含相同的标头 不记名身份