Node.js:POST - 请求方法:选项状态代码:403 禁止

2023-11-27

我们有以下设置:

Front end code : REACT (Hosted using express js) (lets call this www.domainA.com)
Backend        : .NET WEB API (Hosted in IIS 7.5) (lets call this www.domainB.com)

FE 应用程序的域正在向 Web API 发出 GET 数据和 POST 数据的请求。

GET 工作完美,但是每当我尝试将数据 POST 到 Web API 时,它都会抛出以下错误:

Request URL: http://www.domainB.com/api/postdataoperation
Request Method: OPTIONS
Status Code: 403 Forbidden

我查看了许多 CORS 文章,并继续在 IIS 中设置 HTTPResponseHeaders,如下所示:

Access-Control-Allow-Methods : POST,GET,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin  : http://www.domainA.com

React 解决方案的 post 请求如下:

axios.post(`http://www.domainB.com/api/postdataoperation`, {userId});

问题是您的服务器未配置为响应OPTIONS具有正确响应状态的请求,2xx 成功状态.

GET 正在工作,因为它没有发出预检请求,因为它满足成为简单的请求定义为CORS 文档

另一方面,POST 请求满足成为预检请求,这意味着应首先发出预检 OPTIONS 请求。

简而言之,您已正确设置 CORS 响应标头,但服务器未配置为使用OPTIONS 方法请求的 2xx 响应(通常为 200 状态)。

服务器必须以 2xx 成功状态(通常为 200 或 204)响应 OPTIONS 请求。

如果服务器不这样做,那么您配置它发送什么 Access-Control-* 标头就没有什么区别。配置服务器以正确方式处理 OPTIONS 请求(发送 200 或 204 成功消息)的答案取决于它运行的服务器软件

借用解决方案这个答案,在您的后端 .NET WEB API 上执行此操作:

In your BaseApiController.cs:

我们这样做是为了允许 OPTIONS http 动词

public class BaseApiController : ApiController
  {
    public HttpResponseMessage Options()
    {
      return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
    }
}

参考

预检请求

对预检 403 禁止的响应

Note

在domainA.com 上运行nodejs 服务器是无关紧要的。这"axios"库可用于 a) 从浏览器发出 XMLHttpRequests 或 b) 从 node.js 发出 http 请求。在这种情况下,这是第一个选项,到domainB的“axios.post”是通过a完成的来自浏览器的 XMLHttpRequest,这就是为什么你会得到一个domainB.com 上的预检请求.

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

Node.js:POST - 请求方法:选项状态代码:403 禁止 的相关文章

  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri
  • JSDocs:记录 Node.js 快速路由

    我正在努力使用 JSDocs 记录 router get 调用 如果我尝试将文档附加到我的路由器调用本身 我无法让文档在页面上正确显示 Health check memberof health router get happy functi
  • 从nodemailer为nodejs发送电子邮件

    当我尝试从 nodemailer 发送电子邮件时 出现错误 EAUTH API 我尝试过同时使用 Hotmail 和 Gmail 作为我的服务 因为我从文档中了解到 如果 Gmail 不起作用 就不要使用它 然而 这似乎不是问题 我想使用此
  • Mongoose:转换为 ObjectId 失败

    我正在尝试在 MongoDB 中创建一个类别层次结构 以便通过 Mongoose 与 Node js 一起使用 我正在使用祖先数组方法 http docs mongodb org manual tutorial model tree str
  • 如何在电子中使用 import 或 require

    我正在尝试构建一个电子应用程序 我想从另一个js文件导入一些函数 但是在使用导入时我收到错误显示 不能在模块外部使用 import 语句 为什么会发生这种情况 我的代码是 eventsource js import sample from
  • 致命错误:数组长度无效分配失败 - JavaScript 堆内存不足

    Error lt Last few GCs gt 873 0x1020aa000 47109 ms Scavenge 2107 9 2131 9 gt 2092 1 2131 9 MB 0 3 0 0 ms average mu 0 995
  • 如何区分两个同名的多选列表

    对于我正在构建的系统 我需要查看第一个列表中出现了哪些选项 通过 POST 请求 以及第二个列表中出现了哪些选项
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • Mongoose 选择要从 findOneAndUpdate 返回的字段

    在 Nodejs 中使用 Mongoose 您可以使用 find 返回一些字段 例如 User findOne id 132324 first name 1 last name 1 exec 但我似乎无法弄清楚如何使用 findOneAnd
  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • 为什么只有 50 个实例在 AWS lambda 上运行?

    我在用context logStreamName识别 lambda 实例 并发设置为无保留 但日志显示只有 50 个实例正在运行 我是否误解了logStream pre logStream pre实例 我从那里得到的信息这个博客 https
  • 使用express记录所有GraphQL响应

    我成功地设置了记录 graphQL 错误 app use graphql graphqlHTTP request gt return schema rootValue request formatError error gt const p
  • 如何确保循环完成后执行语句?

    下面是我的代码的快照 routes index js exports index function req res var results new Array for var i 0 i lt 1000 i do database quer
  • 节点对特定浮点数字的总和给出奇怪的输出

    我在玩 Node REPL 时遇到了这种奇怪的行为 4 32 4 78 应该只是 9 1 gt 4 32 4 78 9 100000000000001 另一种是 gt 7 3 1 08 8 379999999999999 对于其他数字 它工
  • 导出socket.io时无法读取未定义的属性“socket”

    我正在尝试模块化我的应用程序 并希望在不同的 js 文件上向客户端发出不同的事件 下面的示例代码显示将从 led js 触发事件 onlinestatus 然而我不断收到消息 类型错误 无法读取未定义的属性 套接字 每当我尝试从 led j
  • Socket.IO - 开放连接是一个问题吗?

    我目前正在与DerbyJS http derbyjs com 因为它促进了干净 干燥的客户端 服务器代码 附带好处 大多数人使用该框架的主要原因 是它使用 Socket IO 来创建实时应用程序 在这种情况下 我不need实时 但这是一个很
  • 电子无声打印

    我目前正在构建一个电子应用程序 我的本地文件系统上有一个 PDF 我需要以静默方式打印出来 在默认打印机上 我遇到了节点打印机库 但它似乎对我不起作用 有没有一个简单的解决方案可以实现这一目标 首先 几乎不可能理解 无声 打印的含义 因为一
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • Vue.js - 当标头中使用 multipart/form-data 时,axios 中的文件上传验证失败

    我正在构建一个 Laravel Vue js SPA 单页应用程序 BootstrapVue https bootstrap vue js org Vee验证 https logaretm github io vee validate gu

随机推荐

  • 使用 HuggingFace 微调 T5 进行汇总时出现关键错误

    我正在尝试微调 T5 变压器进行汇总 但收到一条关键错误消息 KeyError Indexing with integers to access backend Encoding for a given batch index is not
  • 如何在 C 程序中不使用删除系统调用来删除文件?

    我一直很好奇如何rem在 Linux 中工作并尝试编写我自己的C可以删除文件的代码 但是当我搜索答案时 我只得到了正在使用的程序remove 系统调用 有没有其他方法可以在不使用系统调用的情况下完成此任务 例如编写自己的代码来完成这项工作
  • XML 阅读器类中令人讨厌的新行和空格

    我正在使用博主编写的类 http troybrant net blog 它接受一个 XML 字符串并输出一个 NSDictionary 它很漂亮 工作完美 除了我最终在许多元素值的开头出现了奇怪的换行符和空格配置 我一直不明白为什么 我将课
  • 如何在index.jsp上加载servlet

    有没有办法调用servletindex jsp 我的欢迎文件是index jsp 我需要通过 servlet 填充下拉列表值index jsp被打开 我尝试设置
  • PhoneGap/Cordova Android 开发

    更新1 这就是我最终所做的一切 sudo aptitude install y python software properties python g make sudo add apt repository y ppa chris lea
  • 如何在 React JS 应用程序中为 Azure Active Directory B2C 设置重定向 URL 到 b2clogin.com

    我正在开发 React js 应用程序 并将使用 azure adb2c 来确保安全 参考 要在用户流中启用 javascript 似乎我必须将重定向网址更改为b2clogin com 我已经提到过这个https learn microso
  • Spark 将 csv 列中的空值视为空数据类型

    我的 Spark 应用程序读取 csv 文件 使用 sql 将其转换为不同的格式 并将结果数据帧写入不同的 csv 文件 例如 我输入csv如下 Id FirstName LastName LocationId 1 John Doe 123
  • 如何在特定时间使用 FFMPEG 将音频添加到现有视频?

    我有包含 10 分钟视频的视频文件 avi 我还有包含 1 分钟声音的音频文件 wav 我需要将音频添加到现有视频中 但音频需要在视频一分钟后开始 怎么做 如果可能的话 更喜欢使用 ffmpeg 已经尝试这个查询 延迟 30 秒 i vid
  • Angularjs 触发国家依赖

    有人可以帮我制作国家 州下拉依赖项的示例吗 我特意以这种方式创建 JSON 因为我希望依赖项是通用的 这样我就可以将它应用到任何下拉列表中 同时仅使用元数据而不是 HTML Here s a link查看 JSFiddle 中的代码示例 H
  • 如何按一列对 pandas 数据框进行排序

    我有一个像这样的数据框 0 1 2 0 354 7 April 4 0 1 55 4 August 8 0 2 176 5 December 12 0 3 95 5 February 2 0 4 85 6 January 1 0 5 152
  • 无法将新文件添加到 Egit 中的存储库

    我将 Egit 与 Eclipse Juno 一起使用 我与本地存储库合作 一切都很好 甚至添加 GitHub 存储库似乎也没有问题 我将其添加到 Remotes 下的本地存储库中 因此我可以轻松地将提交推送到 github 但过了一段时间
  • Web.Config 调试/发布

    我知道 Visual Studio 2010 中的 web config 提供了从数据库从调试模式切换到发布模式的功能 这是我的 Web Release config
  • 监控 iPhone 应用程序上的 Google Analytics 请求

    我正在尝试监控 iPhone 应用程序上的 Google Analytics 请求 但由于某种原因 我没有看到任何 GA 请求 不过 我可以在谷歌分析界面上看到并唯一识别流量 我尝试过使用多种技术 包括使用 Fiddler Charles
  • 刷新 iframe

    如何刷新 iframe 例如 我单击此 iframe 中的 视频 然后单击按钮刷新 iframe 我希望刷新 iframe 时位于该 视频 页面上 由于单源政策 您无法刷新其中的内部文档 您是否尝试过更改 iframesrc属性并添加随机
  • Android - sqlite 内容提供程序和多线程

    我对内容提供商有点困惑 如果我的应用程序中有多个活动 它们是否都会获得自己的内容提供程序实例 它本质上只是一个类 接口 在一项活动中 我将有许多线程同时写入数据库 如何处理允许一个线程一次写入的问题 我是否只是捕获 SQLiteDataba
  • 适用于 GCC 的良好 C++ 分析器

    我试图找到一个相关的问题 但之前的所有问题都是关于 Windows 中本机 C 的分析器 我用谷歌搜索了一段时间并了解了 gprof 但 gprof 的输出实际上包含许多晦涩的内部函数 是否有一个好的开源 C 分析器和良好的文档 Valgr
  • Rails3 fields_for 文本哈希:未按预期工作

    我有一个 Rails3 表单 允许用户编辑答案列表 作为评估的一部分 我用一个fields for循环生成每个文本输入 应用程序 模型 评估 rb class Assessment lt ActiveRecord Base serializ
  • mysql> 创建数据库测试;错误 1006 (HY000):无法创建数据库“测试”(错误号:2)

    我的root账户登录mysql后无法创建数据库 我必须创建一个管理员帐户才能执行此操作吗 另外 由于某种原因 我的启动文件没有安装 出现错误 我不确定这是否会影响其他任何事情 因为当我在终端中输入 mysql 时 mySQL 会启动 另外当
  • Oracle 分析函数 - 重置窗口子句

    我有以下数据集 create table t1 dept number date1 date Table created insert into t1 values 100 01 jan 2013 insert into t1 values
  • Node.js:POST - 请求方法:选项状态代码:403 禁止

    我们有以下设置 Front end code REACT Hosted using express js lets call this www domainA com Backend NET WEB API Hosted in IIS 7