javascript - 在 Express 应用程序中添加参数时出现 CORS 错误
问题描述
我完全不明白为什么这不起作用。
我有一个托管在 Heroku 上的快速应用程序,基本上可以做到这一点
var urlMetadata = require('url-metadata')
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products', function (req, res, next) {
res.json({
msg: 'This is CORS-enabled for all origins!'
})
})
app.get('/prod/:url', function (req, res, next) {
var url = decodeURI(req.params.url);
urlMetadata(url).then(
function (metadata) {
res.json({
metadata
});
},
function (error) {
console.log(error)
})
})
客户端
axios
.get(`https://git.heroku.com/egosmos-meta.git/prod`, {
params: {
url,
},
})
.then((response) => {
console.log(response);
});
axios
.get(`https://egosmos-meta.herokuapp.com/products`)
.then((response) => {
console.log(response);
});
这就是我得到的
如此/products
有效,但/prod/:url
会引发 CORS 错误
谢谢你的帮助!
解决方案
params
在 Axios 中定义了查询参数,例如,?url=http://example.com
但您的 Express 应用程序需要一个路由参数。
将您的客户端代码更改为以下内容
axios.get(`https://git.heroku.com/egosmos-meta.git/prod/${encodeURIComponent(url)}`)
你得到一个 CORS 错误,因为你没有路由,/prod?url=...
所以 CORS 中间件没有启动。
推荐阅读
- c - 进程可以读取自己的标准输出/标准错误吗?
- migrate - django.db.utils.ProgrammingError:在我尝试将 Hstorefield 添加到我的模型后无法调整类型“dict”
- python - 如何从每个 URL 读取特定列并为多个 URL 重复它
- php - 当所有单独的主题颜色都定义为文件中的 PHP 变量时,如何使用 PHP 更改主题?
- javafx - JavaFX 拖放:当节点的边框与目标重叠时触发 Target 上的 DragEntered 事件
- javascript - 我怎样才能发出许多 AJAX 请求,然后在它们全部完成后调用一个函数?
- laravel - 有没有办法阻止 phpunit 中的 laravel 文件被 Trajon 病毒感染
- java - 如何使用 Leak Canary 找到我的内存泄漏?
- python - 如何在没有“闪烁”屏幕的情况下在 Python 中打印网格
- maven - 更改 vuejs 项目中 webpack 的 dist/ 文件夹的目的地(使用 frontend-maven-plugin)?