如何解决在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',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错误
感谢您的帮助!
解决方法
Axios中的
params
定义了查询参数,例如?url=http://example.com
,但是您的Express应用期望route parameter。
将您的客户端代码更改为以下
axios.get(`https://git.heroku.com/egosmos-meta.git/prod/${encodeURIComponent(url)}`)
由于没有/prod?url=...
的路由而收到CORS错误,因此CORS中间件没有启动。
尝试使用corsOption。.
var cors = require('cors')
var corsOptions = { 来源:“ https://git.heroku.com”, optionsSuccessStatus:200 //一些旧版浏览器(IE11,各种SmartTV)在204处阻塞 }
app.use(cors(corsOptions))
如果是axios,也可以尝试
axios.get(https://git.heroku.com/egosmos-meta.git/prod/${url}
)。then()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。