代码之家  ›  专栏  ›  技术社区  ›  Ruan Mendes

正在修改代理http响应

  •  0
  • Ruan Mendes  · 技术社区  · 8 年前

    我有一个启动dev代理服务器的gulpfile。

    gulp.task('dumbserver', ()=> {
        const express = require('express');
        const httpProxy = require('http-proxy');
        const app = express();
        const proxy = httpProxy.createProxyServer();
    
        app.use('/api', function (req, res) {
            proxy.web(req, res, {target: 'https://bos1-vcd-sp-static-199-8.eng.vmware.com/api', secure: false},
                (e) => console.log('error', e)
            );
        });
        return app.listen(8080, function () {
            console.log('Server started on port 8080.');
        });
    });
    

    当我给邮递员打电话时 https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/session 我得到以下有效载荷:

    <Session locationId="86171c79-e8f0-4c06-a0a8-4bc7fde76915@7bcf706c-d90f-4e1b-b0cc-b2a13db3e618" org="juan" roles="System Administrator" user="administrator" userId="urn:vcloud:user:7b5f0241-f597-4851-8cae-655a15afde24" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/session" type="application/vnd.vmware.vcloud.session+xml"> <Link rel="down" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/org/" type="application/vnd.vmware.vcloud.orgList+xml"/> <Link rel="remove" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/session"/> <Link rel="down" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/admin/" type="application/vnd.vmware.admin.vcloud+xml"/> <Link rel="down" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/api/admin/extension" type="application/vnd.vmware.admin.vmwExtension+xml"/> <Link rel="nsx" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/network" type="application/xml"/> <Link rel="openapi" href="https://bos1-vcd-sp-static-199-8.eng.vmware.com/cloudapi" type="application/json"/> </Session>

    但是,当我用邮递员打电话给 localhost:8080/api/session ,最后两个链接重写了

    <Link rel="nsx" href="https://localhost:8080/network" type="application/xml"/>
    <Link rel="openapi" href="https://localhost:8080/cloudapi" type="application/json"/>
    

    但其他链接都没有被重写。

    有什么建议吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Ruan Mendes    8 年前

    结果发现 http-proxy 添加一个 宿主 标题。正在生成链接的服务器端代码使用 宿主 头(如果可用)作为基URL,覆盖配置的值。

    不删除这个问题是希望http代理向请求添加主机头这一已知事实可能会导致代码中出现错误。

    推荐文章