5xx 或 4xx 错误,“不存在‘Access-Control-Allow-Origin’标头”

2024-01-10

我的浏览器在 devtools 控制台中记录以下消息:

请求的资源上不存在“Access-Control-Allow-Origin”标头。响应的 HTTP 状态代码为 503。

背景:我有两个应用程序。一种是连接到 Mongo 数据库的 Express Node 应用程序。另一个是一个基本的 Web 应用程序,它使POST通过 Fetch API 向 Node 应用程序发出请求,以从 Mongo 获取数据。

Issue: 虽然我没有收到CORS在我的本地计算机上出现错误,当我将基本 Web 应用程序部署到生产环境时,我就会收到以下错误。该 Web 应用程序制作了POST向 Node 应用程序发出请求并给我这个:

The POST请求似乎确实有效,并且数据已保存到 Mongo 中,但此错误在 Heroku 中被标记为“严重错误”,并且非常烦人。

我意识到我可以设置no-corsFetch 中的选项,但我相信这是必需的,因为我正在向与来源不同的 url 发出请求。正确的?

Express节点应用程序代码

In my app.js文件我已经设置了正确的标头以确保其他应用程序可以从不同来源发出请求

app.js

// Add headers so we can make API requests
app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});

路线/api/api.js

router.post('/users/:url/upload-csv/:csv_name', (req, res) => {
  let csv_name = req.params.csv_name;
  let csv_string = csv_name+req.body.csv_string;

  User.findOne({url: req.params.url})
    .then((user) => {
      if (user.csv_files.length === 0) {
        user.csv_files.push(csv_string);
      } else {
        let foundExistingCSV = false;
        for (var i = 0; i < user.csv_files.length; i++) {
          if (user.csv_files[i].includes(csv_name)) {
            foundExistingCSV  = true;
            user.csv_files[i] = csv_string;
            break;
          }
        }
        if (!foundExistingCSV) user.csv_files.push(csv_string);
      }
      user.markModified('csv_files');
      user.save();

      res.status(204);
    })
    .catch((err) => {
      console.log(err);
      res.status(400);
    });
});

基本网络应用程序代码

POST我正在提出的要求

utils.js

utils.exportToMongo = functions(table, name) {
  var exportPlugin = table.getPlugin('exportFile');
  var csv_string   = exportPlugin.exportAsString('csv');

  // Upload the CSV string and its name to Users DB
  fetch(`${utils.fetchUserURL()}/upload-csv/${name}`, {
    method: 'POST',
    body: JSON.stringify({csv_string: csv_string}),
    headers: new Headers({
      'Content-Type': 'application/json',
      Accept: 'application/json',
    })
  }).then((res) => {
    return {};
  }).catch((error) => {
    console.log(error);
    return {};
  });
}

我怎样才能删除503错误?任何见解将不胜感激!


An HTTP 5xx错误表示服务器端出现一些故障。或者它甚至可以表明服务器根本没有响应 - 例如,可能的情况是,您的后端尝试将请求代理到另一个端口上的服务器,但服务器甚至没有启动并在预期端口上侦听。

同样,一个4xx表示请求存在一些问题,导致服务器无法处理它。

为了确认,你可以尝试使用curl、Postman或其他东西发出相同的请求,看看是否得到2xx请求的成功响应,而不是5xx or 4xx.

无论如何,如果您看到5xx or 4xx如果客户端发生错误,则应在服务器端记录一些消息以指示失败的原因和原因。所以要确定是什么触发了5xx/4xx错误,请检查服务器日志以查找服务器在发送错误之前记录的消息。

就 CORS 错误消息而言,预计在大多数情况下5xx or 4xx错误,服务器不会添加Access-Control-Allow-Origin响应的响应头;相反,服务器很可能只会发送该标头2xx and 3xx(重定向)响应。

因此,如果您找到原因5xx/4xx错误已解决,以便您可以获得成功响应,您可能会发现您的 CORS 配置已经工作正常,并且您没有什么需要修复的。

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

5xx 或 4xx 错误,“不存在‘Access-Control-Allow-Origin’标头” 的相关文章

随机推荐

  • 如何找到这个堆栈跟踪?

    我的程序一直崩溃 但是logcat没有显示任何异常 我刚刚收到以下消息 以及大量有关 CPU 使用情况的统计信息 显然我使用了太多的 CPU 但我不知道我的程序的哪一部分正在执行此操作 下面的文件在哪里 我找不到它 12 30 23 13
  • 整数的布尔运算[重复]

    这个问题在这里已经有答案了 这可能是非常基本的 但我似乎不明白 如何 2 1 0 3 1 1 4 1 0 etc 上面的这个模式似乎有助于找到偶数 or 0 1 1 1 1 1 2 1 3 3 1 4 4 1 5 5 1 5 我知道布尔代数
  • 为什么人们在 C++ 中的头文件名中不使用大写字母?

    我想知道为什么人们不在头文件名称中使用大写字母 我看到许多头文件的名称仅是小写的 但我认为如果他们用大写字母写 比如 BaseClass h SubClass h 而不是 baseclass h subclass h 会更容易阅读 这是为什
  • Django - 更改内联表单集文本输入大小属性

    我有一个内联表单集 只有三个字段 class Estimate Product Details models Model proposalID models ForeignKey Estimate Construction verbose
  • v11.4.2 中的 FirebaseAuth signInWithEmailAndPassword() 没有响应

    我已升级到 Firebase Android 库 v11 4 2 以便在我的 Android 应用程序上试用 Firestore 但是 当我尝试使用 FirebaseAuth 通过 signInWithEmailAndPassword 登录
  • 如何使用 iOS 应用程序在 iPad/iPhone 中打开 PDF 文件?

    如何使用我自己的应用程序打开存储在 iPad iPhone 中的 PDF 文件 您可以使用 UIwebview 来加载它 这很简单 如果您想要更大的灵活性 您应该使用 Quartz 框架类 EDIT 要查看下载的 PDF 您可以在应用程序中
  • SubSonic 3 和 MySQL,在 CleanUp() 方法中从列名中删除下划线会导致在 linq-query 中使用属性时出现异常

    我在使用 SubSonic 3 0 0 3 ActiveRecord 和 MySQL 时遇到了问题 由于 MySQL 不允许您在表名或列名中使用大写字母 或者如果您这样做 则忽略它 我决定使用下划线分隔单词 例如entity id 然后使用
  • 如何将一个数字分成n组

    我需要将一个数字分成几组数字 然后将这些数字放入一个数组中 然后我将对这些数字进行一些简单的数学运算 然后将它们插入到文本框中 到目前为止 我只找到了如何将数字拆分为单独的数字 如下所示 var number 12354987 output
  • python Fabric是否支持动态设置env.hosts?

    我想动态更改 env hosts 因为有时我想先部署到一台机器 检查是否正常 然后部署到多台机器 目前我需要先设置 env hosts 如何在方法中设置 env hosts 而不是在脚本启动时全局设置 是的 你可以设置env hosts动态
  • MySQL > 表不存在。但它确实(或者应该)

    我更改了 MySQL 安装的数据目录 除了一个之外 所有库都正确移动 我可以连接并且USE数据库 SHOW TABLES还正确返回所有表 并且每个表的文件都存在于 MySQL 数据目录中 然而 当我尝试SELECT表中的某些内容 我收到一条
  • 内存分配问题

    这个问题是在面试的笔试中被问到的 include
  • 使用 FileProvider 从图库中选取图像文件

    编译 Android N 我遇到了一个问题FileProvider 我需要让用户从图库中选择图像 用相机拍照 然后将其裁剪为正方形 我已经成功实现了FileProvider用于用相机拍摄图像 但我在从图库中选取图像时遇到严重问题 问题是 在
  • 线段树、区间树、二叉索引树和范围树有什么区别?

    线段树 区间树 二叉索引树和范围树之间有什么区别 关键思想 定义 应用领域 更高维度的性能 秩序 空间消耗 请不要仅仅给出定义 所有这些数据结构都用于解决不同的问题 线段树存储间隔 并针对 这些区间中的哪一个包含给定点 查询 区间树也存储间
  • 配置 Rails 以输出 HTML 输出而不是 XHTML

    使用助手 表单 javascript css 等 时 如何配置 Ruby on Rails 输出标准 HTML 代码而不是 XHTML I don t想要在末尾有斜线
  • 如何压缩两个不同大小的列表,重复较短的列表?

    我想压缩两个不同长度的列表 例如 A 1 2 3 4 5 6 7 8 9 B A B C 我期待这个 1 A 2 B 3 C 4 A 5 B 6 C 7 A 8 B 9 C 但内置的zip不会重复与较大尺寸的列表配对 是否存在任何内置方法可
  • 如何动态更改引导模式数据目标点击

    我有一个网站日历 其作用类似于预订请求 我在 Bootstrap 2x 中可以使用此功能 但已将应用程序转换为 3 0 一切似乎都正常 但我试图找出如何动态更改数据目标 如果日期可用 日历中的一天可能如下所示 div class NotRe
  • 我应该使用 YUI 压缩机还是新的 Google Closure 编译器来压缩 JavaScript?

    YUI Compressor 是公认的最佳最小化工具 但 Closure 似乎还可以更好 无论你找到最适合你的那个 我认为这是目前的普遍答案 YUI 已经推出了更长的时间 因此毫无疑问将是目前公认的最佳工具 然而 Closure 对我们来说
  • 如何让 gvim 与 Visual Studio 2010 完美配合?

    在我的上一份工作中 他们使用 Visual Studio 2005 有时也使用 Visual Studio 97 为了方便使用命令行 我使用 vim 来编辑 Mercurial 版本控制配置文件 如 hgrc 和 hgignore 然而 我
  • 更改 HTML POST 端口

    我在 HTML 文档中有一个表单 我想将其内容作为 POST 请求提交到服务器 但是 我想将 POST 请求发送到服务器上除端口 80 之外的端口 这可能吗 只需将其附加到操作中即可
  • 5xx 或 4xx 错误,“不存在‘Access-Control-Allow-Origin’标头”

    我的浏览器在 devtools 控制台中记录以下消息 请求的资源上不存在 Access Control Allow Origin 标头 响应的 HTTP 状态代码为 503 背景 我有两个应用程序 一种是连接到 Mongo 数据库的 Exp