当前位置: 首页 > 知识库问答 >
问题:

对服务器执行ajax调用。来自vue应用程序的js,使用heroku

柯国安
2023-03-14

我成功地学习了本教程:

https://medium.com/p/a69845ace489/responses/show

现在,我如何做一个ajax调用从我的dist目录使用vue axios,我的server.js节点文件?

因为heroku正在为我与进程的连接提供随机端口。环境。港口城市

这是我的主服务器配置。js,在vue内部。js应用程序,位于dist目录中:

Vue.server = Vue.prototype.server = "https://myapp.herokuapp.com/";

请注意没有端口,因为我不知道heroku使用的是哪个端口。

这是来自vue的axios随机调用。js应用程序

axios.post(Vue.server + "getUser", {id: this.id})
    .then(response => {
        this.user = response.data;
    })
    .catch(function (erreur) {
        console.log(erreur);
    });

这是我的服务器。js文件:

// server.js
var express = require('express');
var path = require('path');
var serveStatic = require('serve-static');
app = express();
app.use(serveStatic(__dirname + "/dist"));
var port = process.env.PORT || 5000;
app.listen(port);console.log('server started '+ port);

我的问题是,无法在我的vue应用程序中设置端口,所有其余代码都正常工作,我不包括节点rest内容。

您是否认为将localhost作为Vue来保存。服务器变量可以在线工作吗?非常感谢。

第2部分:

像这样更改了我的server.js文件,添加了一个getUser post Web服务:

// server.js
var express = require('express');
var path = require('path');
var serveStatic = require('serve-static');
const mongodb = require("mongodb");
app = express();
app.use(serveStatic(__dirname + "/dist"));
var port = process.env.PORT || 80;

const cors = require("cors");

app.use(cors());

app.post("/getUsers", function(req, res) {
   res.send('ok');
});

app.listen(port);
console.log('server started '+ port);

这是我现在的elloworld.vue:

import axios from "axios";
axios.defaults.withCredentials = true;
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },methods: {
    getUsers: function () {

            axios
                .post("http://localhost/" + "getUsers", {
                })
                .then(response => {
                   console.log(response);
                })
                .catch(function (error) {
                    console.log(error);
                });
        }
        },
    created: function () {
        this.getUsers();

    }
}
</script>

2.5:在我的localhost服务器上,一切都运行良好,ajax调用工作没有CORS错误:

node server.js 

git推送heroku主机

已阻止跨源请求:同一源策略不允许读取位于的远程资源http://localhost/getUsers.(原因:CORS请求未成功)。

共有1个答案

南宫奇思
2023-03-14

您的代码当前将POST位置硬编码为localhost,这保证不能在heroku(或任何其他托管服务)上工作。

相反,甚至不要硬编码“正确的域”,只需直接发布到/getUsers,而无需任何明确的域,无论您在哪个域上,浏览器都会做正确的事情(命名、普通IP、WLAN、LAN,都可以正常工作)。

 类似资料:
  • 我开始了一个新的项目Angular2(客户端)和节点JS(服务器端)技术。 我已经使用和创建了一个RESTful API。输入特定URL时,将显示匹配的Json响应。到现在为止,一直都还不错。 现在我正试图在这个过程中积分Angular 2。我已经创建了这个应用程序。组成部分显示页面时,组件未加载,我得到了一些404代码: 这是我的项目结构: 我的包裹。json: 还有我的索引。ts(服务器):

  • 我有一个简单的facelets页面: Foobar bean如下所示: -将有效的输入值推送到模型(如果组件连接到bean属性)。 -执行操作和操作侦听器(如果组件是操作)。 所以在这里,应该执行myCommandButton,不是吗?而组件的执行意味着要执行它的操作?

  • 我正在尝试开发一个HTML5应用程序,通过PhoneGap移植到native。该应用程序是否可以在移动设备上充当服务器,在另一个移动设备上充当客户端并连接到前者?这些都在本地网络中。 我是PhoneGap的新手,我知道大多数服务器实现都在node.js或PHP等平台上,而且PhoneGap只支持超文本标记语言、CSS和JavaScript。我认为我在这里可能部分错误,因为有各种插件可以帮助简化Ph

  • 我需要帮助在外部服务器上运行/调试我的GWT应用程序,而不是使用默认的jetty服务器。我读了几个与这个问题相关的主题,例如。 > 在哪里编写gwt-noserver选项以避免jetty? 如何使用GWT和(常规servlet)Jetty后端设置eclipse http://www.gwtproject.org/doc/latest/devguideCompilinganddebugging.ht

  • 我正试图通过Appium、Selenium框架自动化一些在Android设备上运行的移动应用程序测试。我已经在Selenium中设置了测试类,并尝试使用以下所需功能启动android驱动程序。我的Appium版本是1.4.16.1 当我在真正的三星设备上运行测试时,应用程序被打开,然后在打开时立即崩溃,并带有消息,我的测试应用程序是 当我在Appium桌面控制台中查看日志时,我看到以下内容: 请帮

  • 我正在尝试向asmx soap web服务发送一些数据,一直在尝试,但确实成功发送了。我得到的错误是: 08-13 20:51:12.571:带系统。err(8885):SoapFault-faultcode:“soap:Server”faultstring:“服务器无法处理请求--- 以下是web服务URL:http://87.248.129.182:8090/PostPhotoInfo.asm