【问题标题】:Call localhost api with url rewrite使用 url 重写调用 localhost api
【发布时间】:2019-01-17 23:13:31
【问题描述】:

我有一个 WebApi 和一个 Angular 网站。 角度部分在公共地址上。 是否有可能在不暴露的情况下到达api?

我在想也许可以使用 url rewrite 来完成(我是 url rewrite 的新手),但到目前为止我还没有运气。

例如,如果站点的地址为 somesite.com,则调用 somesite.com/api/cars 以检索汽车列表。然后重写应该将其更改为 localhost:5000/api/cars。

有可能吗?

提前致谢!

【问题讨论】:

  • 不曝光是什么意思? API 必须是公开的,您的应用才能访问它。
  • 我希望我可以通过重写规则来实现它,这样我就不必公开它了。
  • JavaScript 的性质让你没有机会隐藏这些,你为什么要隐藏它?

标签: angular iis url-rewriting asp.net-web-api2


【解决方案1】:

如果您计划部署一个静态服务器(例如 NGINX / Apache)来传递 Angular 文件并进一步将其用作反向代理以从您的 API 获取数据,那么可以,您可以将您的 URL 重写为localhost:5000/api/cars

您可以进一步配置在端口 5000 上运行的服务器,使其仅接受来自 localhost / 127.0.0.1 的请求。因此,somesite.com:5000/api/cars 将无法从外部世界访问。

【讨论】:

    【解决方案2】:

    您不能仅使用 URL 重写来做到这一点,您必须安装 ARR。安装后,您可以输入这样的规则来实现您想要的:

    <rules>
        <rule name="Reverse Proxy to api" stopProcessing="true">
            <match url="^api/cars/(.*)" />
            <action type="Rewrite" url="http://localhost:5000/api/cars/{R:1}" />
        </rule>        
    </rules>
    

    【讨论】:

      【解决方案3】:

      这是不可能的。我不知道我在想什么。 由于 Angular 在客户端上,如果您调用 localhost,您将无法访问服务器。本地主机只会调用您安装了浏览器的计算机。

      【讨论】:

        猜你喜欢
        • 2012-01-25
        • 2012-07-26
        • 1970-01-01
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多