【问题标题】:relative URL not working with axios in node相对 URL 不适用于节点中的 axios
【发布时间】:2019-03-27 14:31:01
【问题描述】:

在我的节点服务器上,以下代码有效

axios.get('http://localhost:8080/myPath') // works

但是相对路径不起作用

axios.get('/myPath') // doesn't work

我收到此错误:

消息:“连接 ECONNREFUSED 127.0.0.1:80” 端口:80

如何让相对 url 像在浏览器中一样工作?

相对路径应该访问端口 8080,而不是 80。

在我的节点服务器上哪里设置?

【问题讨论】:

    标签: javascript node.js http url relative-path


    【解决方案1】:

    使用自定义配置创建一个新实例。如下所示

    var instance = axios.create({ baseURL: 'http://localhost:8080' });

    instance.get('/myPath', { 超时:5000 });

    希望,这会奏效 参考:https://www.npmjs.com/package/axios

    【讨论】:

    • 您可以从请求标头(即 req.headers.origin)中获取来源,而不是对 basURL 进行硬编码
    【解决方案2】:

    在这种情况下,您不能使用相对 URL,因为它没有任何相关性 - 您正在执行在服务器上运行的脚本中的代码,而不是在浏览器中。它没有任何相对于“当前” URL 的概念。

    您需要明确指定完整的域名和端口。如果这会给您带来问题(例如,因为您想在不更改代码的情况下将其部署到不同的主机),您将不得不以另一种方式将值注入您的代码(例如,通过从配置文件中读取,参见documentation here) .

    【讨论】:

    • "something on a different port" — 它不在不同的端口上。没有什么可以相对的。代码未在浏览器中运行。
    • @Quentin 好的,所以我们讨论的是在节点环境中执行服务器端的代码。对不起,我不知何故错过了那部分。将修改答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2012-08-11
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多