如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?

Posted

技术标签:

【中文标题】如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?【英文标题】:How can I configure IIS so that my ASP.NET web applications running on the same machine can POST to each other, but the public cannot POST? 【发布时间】:2012-02-04 01:06:05 【问题描述】:

更具体地说,我正在编写一个 Web 请求处理程序,该处理程序将请求分叉到 独立、不同 ASP.NET Web 应用程序的不同处理页面。具体来说,此处理程序的目的是处理 Paypal 的即时付款通知。

我想知道如何将这些自定义处理页面仅公开给本地主机,以便我的分叉处理程序的 POST 将通过,但远程机器无法直接发布到这些页面。

【问题讨论】:

【参考方案1】:

可以将 IIS 配置为仅允许某些 IP 地址访问站点。这些设置可以在站点的目录安全选项卡 (IIS6) 或 IP 地址和域限制选项 (IIS7) 中找到。您可以将此限制为本地请求,仅指定唯一允许的地址为 127.0.0.1

【讨论】:

这仅在站点级别可用还是在单个页面级别也可用? IIS 仅在站点/应用程序级别处理此问题 - 如果您想要比这更精细,您需要构建到您的 asp.net 应用程序中,检查 Request.IsLocal 属性【参考方案2】:

在 IIS 管理器中,在您只想允许本地访问的站点的绑定操作面板中,将 IP 地址更改为 127.0.0.1。

对于多个应用程序,在您的 Windows 主机文件 (system32\drivers\etc\hosts) 中为 127.0.0.1 设置多个别名。返回“绑定”操作面板,将每个站点的主机名设置为其中一个别名,并在来自其他站点的 GET 或 POST 中使用该别名,例如 httpx://mylocalsite/default.aspx。

如果您不能隔离整个站点,那么您可以编写一个HttpModule,并在BeginRequest 事件中,如果Request.IsLocal 对于您关注的页面不正确,则抛出一个错误。

【讨论】:

【参考方案3】:

好吧,我不知道如何在 IIS 中进行操作,但您的页面可以检查

Request.IsLocal

【讨论】:

以上是关于如何配置 IIS,使我在同一台机器上运行的 ASP.NET Web 应用程序可以互相 POST,但公众不能 POST?的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP、Apache 和 IIS 在同一台机器上

iis怎么配置php的

发布到IIS时,代码隐藏文件未更新

同一台机器上的 SQL Server Express,还是外部共享的 SQL Server Standard? (对于 ASP.NET 站点)

APS+PHP多站点 应该如何配置?

让 IIS 在 Intranet 环境中模拟 Windows 用户到 SQL Server