我有一个小型 NodeExpress 服务器,当我尝试向服务器发出请求时,它返回 403 错误 我已经安装了
Cors
并使用了它,并尝试使用 chrome 浏览器和 Postman 作为 2 个客户端,但得到了相同的拒绝错误
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
我在
firebase serve
上使用
MacBook Pro (14-inch, 2021), Apple M1 Pro, macOS Monterey 12.3
时遇到了这个问题
更新:
所以显然原因是
macOS Monterey 引入了在端口 5000 上运行的 AirPlay 接收器。这会阻止您的 Web 服务器在端口 5000 上提供服务。接收器已经拥有该端口。
因此,上面引用的答案提出的解决方案是关闭AirPlay接收器,或者在另一个端口上运行您的应用程序。
如果您使用firebase服务运行应用程序,您可以按照以下方法更改端口:
firebase.json 文件无法与 firebaseserve 命令一起使用。 您必须使用 firebase 模拟器:start 命令。
如果你想继续使用firebase服务那么它应该像这样使用 在:
firebase serve --only hosting --port=5002
旧答案:
这不是一个足够的答案,但我可以通过输入
127.0.0.1
而不是 localhost
来绕过这个问题。我认为这不是最好的答案,我也不满意。一旦找到更好的答案,我一定会回来更新答案。
只需使用另一个端口,例如5100
"sampleApp": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"applicationUrl": "http://localhost:5100",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
有时我在 Monterey 上开发 FLASK 应用程序并使用 Chrome 时遇到同样的问题。 重新启动 Chrome 总是可以解决该问题。我认为没有正确停止应用程序是我的情况的根本原因。
我刚刚遇到这个问题。我的堆栈是 Node + Express
使用此堆栈,上述解决方案也适用。
我所要做的就是更改端口号:
app.listen(5000);
// 不起作用
app.listen(8000);
// 一切都好:)
我遇到了类似的结果,关闭 Airplay 接收器帮助我解决了问题