账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用nodejs做跨域代理服务器,请求数据后,应该怎么传递给html页面
    30
    0

    我现在遇到一个问题,我使用nodejs做跨域代理服务器,接口地址是不断变化的,我希望可以在html页面上输入接口的地址,然后在server.js文件中读取这个接口的数据,返回给html页面,请问我的html页面应该怎么写?

    问题1

    var myUrl = "http://tianjinshuxie.net/interfaces/abc.php";

    我的这个url地址是不断变化的

    问题2

    http://127.0.0.1:8989/

    这个地址上的数据应该怎么传递给我的项目里

    server.js 文件

    
    var http = require("http");
    var url = require("url");
    var qs = require("querystring");
    
    //用node中的http创建服务器 并传入两个形参
    http.createServer(function(req , res) {
    //设置请求头 允许所有域名访问 解决跨域
        res.setHeader("Access-Control-Allow-Origin" , "*");
    
    //获取地址中的参数
        var query = url.parse(req.url).query;
    
    //用qs模块的方法 把地址中的参数转变成对象 方便获取
        var queryObj = qs.parse(query);
    //获取前端传来的myUrl=后面的内容  GET方式传入的数据
        var myUrl = "http://tianjinshuxie.net/interfaces/abc.php";
    //创建变量保存请求到的数据
        var data = "";
    
    //开始请求数据 http.get()方法
        http.get(myUrl,function (request) {
    //监听myUrl地址的请求过程
    //设置编码格式
            request.setEncoding("utf8");
    
    //数据传输过程中会不断触发data信号
            request.on("data", function (response) {
                data += response;
            });
    
    //当数据传输结束触发end
            request.on("end" , function () {
    //把data数据返回前端
                res.end(data);
            });
        }).on("error" , function () {
            console.log("请求myUrl地址出错!");
        });
    }).listen(8989, function(err){
        if(!err){
            console.log("服务器启动成功,正在监听8989...");
        }
    });
    
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 流光追不及 普通会员 1楼

      在Node.js中,你可以使用http模块的proxy函数来创建一个代理服务器,然后在代理服务器上设置路由。以下是使用http模块创建跨域代理服务器的步骤:

      1. 首先,你需要安装http模块。你可以使用npm来安装:

      bash npm install http

      1. 然后,你可以创建一个代理服务器。在你的Node.js项目中,你可以创建一个新的JavaScript文件,例如proxy.js,并在其中添加以下代码:

      ```javascript const http = require('http');

      http.createServer((req, res) => { const host = req.headers['host']; const port = parseInt(req.headers['x-forwarded-for'] || req.socket.address().port);

       const proxyUrl = `http://${host}:${port}/api/data`;
       res.writeHead(200, {'Content-Type': 'application/json'});
       res.end(JSON.stringify({data: 'Hello from proxy'}));
      

      }).listen(3000); ```

      这段代码创建了一个代理服务器,监听3000端口。当客户端请求http://${host}:${port}/api/data时,代理服务器会将请求转发到实际服务器。

      1. 现在,你可以在HTML页面中使用XMLHttpRequest对象来发送请求。例如,你可以使用以下代码:

      ```html
      Proxy Server

      ```

      这段代码创建了一个XMLHttpRequest对象,发送一个GET请求到http://localhost:3000/api/data。如果请求成功,它将打印服务器返回的数据。

      注意:你需要确保你的代理服务器和你的目标服务器在同一网络上,并且你的目标服务器可以接受来自代理服务器的请求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部