【问题标题】:Recursive HTTP request: How to prevent a page from calling itself递归 HTTP 请求:如何防止页面调用自身
【发布时间】:2011-07-12 21:28:56
【问题描述】:

我正在寻找一种防止页面重复调用自身的情况的好方法。

我有一个页面,要呈现该页面需要向 RSS 提要发出 HTTP 请求。如果该 RSS 提要的 URL 恰好是当前页面,它将向自身发出请求。新请求将启动对页面的另一个请求,这将启动另一个请求...这种情况一直持续到当所有可用连接都在此递归循环中忙碌时站点停止运行。

几点说明:

  • RSS 的 URL 由用户输入。
  • 这是 CMS 中的一个页面,该页面的 URL 几乎可以是任何内容,并且在输入 RSS URL 后可能会发生变化。
  • 在这种情况下,用户输入了指向远程服务器的 URL,从而导致重定向回页面。

一些想法:

  1. 我可以在渲染之前拒绝来自本地主机 IP 的所有请求。

  2. 在发送请求之前,我可以在一个公共位置跟踪哪些请求处于活动状态,如果它已经在对同一地址的另一个请求的中间,我什至不发送它。

  3. 是否可以在请求标头中添加自定义用户代理并在看到该用户代理时拒绝该请求?

【问题讨论】:

  • 除非我遗漏了什么,否则不能(不应该)将此功能更好地用作单独的模块(而不是页面)吗? (或为 RSS 提要使用处理程序?)
  • 嗯,是的。这不是一个简单的 aspx 页面。页面本身是从处理程序呈现的,并且已经涉及到模块。我试图让这个问题不被细节所困扰。我可能会将“拒绝本地主机请求”作为一个模块来实现。

标签: asp.net iis architecture


【解决方案1】:

正在呈现的页面是否知道它自己的地址/URL(它应该知道),如果知道,它不能只检查以确保它的地址与 RSS 不匹配吗?

【讨论】:

  • 确实如此,这会有所帮助。但在这种特殊情况下,输入的 URL 会发送到远程服务器,该服务器会发送重定向,然后框架函数会自动执行加载 RSS。
猜你喜欢
  • 1970-01-01
  • 2016-07-11
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多