- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的浏览器在 devtools 控制台中记录了以下消息:
No 'Access-Control-Allow-Origin' header is present on the requested resource.… The response had HTTP status code 503.
背景:我有两个应用程序。一个是连接到 Mongo 数据库的 Express Node 应用程序。另一个是基本的 Web 应用程序,它通过 Fetch API 向 Node 应用程序发出 POST
请求以从 Mongo 获取数据。
问题:虽然我在本地计算机上没有收到任何 CORS
错误,但在将我的基本 Web 应用程序部署到生产环境后,我会立即收到以下错误。向 Node 应用程序发出 POST
请求并向我提供以下信息的 Web 应用程序:
POST
请求似乎有效并且数据被保存到 Mongo 中,但是这个错误在 Heroku 中被标记为“严重错误”并且非常烦人。
我意识到我可以在 Fetch 中设置 no-cors
选项,但我认为这是必需的,因为我正在向与来源不同的 url 发出请求。对吧?
Express Node 应用程序代码
在我的 app.js
文件中,我设置了正确的 header 以确保其他应用程序可以从不同来源发出请求
应用程序.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
请求
实用程序.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
错误?任何见解将不胜感激!
最佳答案
HTTP 5xx
错误表示服务器端发生了一些故障。或者它甚至可以指示服务器根本没有响应——例如,可能是您的后端尝试将请求代理到另一个端口上的服务器,但服务器甚至没有启动并监听预期的端口.
同样,4xx
表示请求存在一些问题,导致服务器无法处理它。
要确认,您可以尝试使用 curl、Postman 或其他工具发出相同的请求,并查看您是否收到请求的 2xx
成功响应,而不是 5xx
或 4xx
。
无论如何,如果您在客户端看到 5xx
或 4xx
错误,服务器端应该记录一些消息以指示失败的原因和原因。因此,要确定是什么触发了 5xx
/4xx
错误,请检查服务器日志以查找服务器在发送错误之前记录的消息。
就 CORS 错误消息而言,预计在大多数情况下,对于 5xx
或 4xx
错误,服务器不会添加 Access-Control -Allow-Origin
响应 header 到响应;相反,服务器很可能只会为 2xx
和 3xx
(重定向)响应发送该 header 。
因此,如果您解决了 5xx
/4xx
错误的原因,以便获得成功响应,您可能会发现您的 CORS 配置已经正常工作并且你没有什么可解决的了。
关于javascript - 存在 “No ' Access-Control-Allow-Origin' header 的 5xx 或 4xx 错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45356494/
我住在荷兰,货币是用逗号 (,) 而不是点 (.)即 14.95 的 feeds 被解释为数字而不是 14.95 欧元 有没有可以解决这个问题的LINUX命令(sed?)?所以14.95变成了14,9
我想问: 我有两个表employee,其中包含字段ID、Fullname、email...和表task 包含字段 name_task、list_employee... 使用字段list_employe
请看下面的测试数据。我想获取 avgtime (=timeonsite/visits) 并在 mysql 中显示为“xx:xx:xx”结果。我怎样才能得到它? SET FOREIGN_KEY_CHEC
我必须处理一个大文件(几 MB)并从中删除带有时间标记的注释。一个例子: blablabla 12:10:40 I want to remove this blablabla some more e
所以我有这些数据直接从 iTunes 复制/粘贴: Excel 具有“XX:XX:00”格式,即“hh:mm:ss”,但您可以想象,它更像“mm:ss:00”。音乐时间不长! 由于这不是直接的单元格格
我有一个对象列表,我想使用 Option.Numero_Reference 属性对其进行排序。 Numero_reference 是一个 xx.xx.xx 格式的字符串 有没有办法按 xx 组排序?
我正在尝试部署 nginx - ingress kubectl run nginx --image=nginx kubectl get pod NAME
我有一个日期“2014-07-02 20:57:38 +0000”,我想将它的格式设置为“今天晚上 8:57”。我希望如果一个字符串是昨天,则将其显示为“昨天上午 9:00”。如果既不是今天也不是昨天
目前我使用的是Apache http components client V4.3.5。在我的例子中,我可以上传小文件(1kb),但是当我运行代码并得到异常“org.apache.http.NoHtt
我在 Linux (RHEL 7) 中运行 HTTPS 服务器。我一启动服务器就收到以下错误。 2019/09/04 15:46:16 http: TLS handshake error from x
我正在参加 CTF 挑战赛,该挑战赛有一个链接,如下所示:46.XXX.XX.XX:8008/ 如果我打开该页面中的开发者工具,我可以找到一个小程序,其属性代码值为“mPage.class”
你好 我想每隔 X 小时在我的程序中运行一个方法,该怎么做?我正在谷歌搜索,但什么也没有:/ 最佳答案 你可以考虑Quartz . 它是在 java 中运行的某种 cron。不过我承认,如果您只想安排
我正在尝试检查 NSString 是否为特定格式。 日:日:日。我在想 NSRegularExpression。有点像 /^(\d)\d:\d\d:\d\d)$/? 最佳答案 你有没有试过这样的事情:
我收到错误 git 存储库的 RSA 主机 key 不在已知主机列表中。当我使用存储库 URL 作为我的 git 克隆 URL 运行 jenkins 作业时。 我尝试在运行作业的主机中克隆相同的存储库
我有一个计数器,每 1 秒计数一次,并将 1 添加到 int。 问题 如何格式化我的字符串,使计数器看起来像这样: 00:01:23 代替: 123 我尝试过的事情 到目前为止我尝试过的事情: for
ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx.' (60) 我在尝试远程连接到此服务器时收到此错误。我最近硬重启了
我正在尝试将一些数据从客户端浏览器插入到 AWS 服务器上的 MySQL 数据库。 该代码在 godaddy 上运行,因此看起来像是权限/安全问题。 $servername = "xx.xx.xx.x
我想知道是否有标准方法可以以“UTC+XX:XX”或“UTC-XX:XX”格式返回设备的当前时区? 基于格式化 NSDate 我知道可以在“ZZZZ”的帮助下获得当前时区,它给出“GMT-08:00”
我的 JVM 有 -server 选项,我相信它使 JVM 能够使用 C2 编译器,这意味着用于服务器应用程序,这些应用程序往往比客户端应用程序运行时间更长。但是,GRAAL JIT(由 -XX:+U
public void colortemperatureJSliderStateChanged(ChangeEvent event) { fahrenheitdegree = colortemp
我是一名优秀的程序员,十分优秀!