微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Express应用中添加参数时发生CORS错误

如何解决在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);
      });

这就是我要得到的

enter image description here

所以/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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?