Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express应用程序中添加参数时出现CORS错误_Javascript_Node.js_Express_Axios_Cors - Fatal编程技术网

Javascript 在Express应用程序中添加参数时出现CORS错误

Javascript 在Express应用程序中添加参数时出现CORS错误,javascript,node.js,express,axios,cors,Javascript,Node.js,Express,Axios,Cors,我一点也不明白为什么这不起作用 我在Heroku上有一个express应用程序,基本上就是这样做的 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.j

我一点也不明白为什么这不起作用

我在Heroku上有一个express应用程序,基本上就是这样做的

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错误


谢谢你的帮助

Axios中的
params
定义了查询参数,例如
?url=http://example.com
但您的Express应用程序预期会出现错误

将客户端代码更改为以下内容

axios.get(`https://git.heroku.com/egosmos-meta.git/prod/${encodeURIComponent(url)}`)

您得到一个CORS错误,因为您没有用于
/prod?url=…
的路由,所以CORS中间件没有启动。

尝试使用CORS选项

var cors=require('cors')

var公司={ 来源:'https://git.heroku.com', options successstatus:200//一些传统浏览器(IE11、各种智能电视)在204上阻塞 }

应用程序使用(cors(corsOptions))

如果是axios,请尝试
axios.get(
https://git.heroku.com/egosmos-meta.git/prod/${url}
)。然后()

非常感谢您的快速回答。你的解释很有道理,很有用。但不幸的是,这并没有解决我的问题。我想知道出了什么问题。@Albrich请更新问题中报告的代码和错误消息/屏幕截图