在某些情况下,HTTP POST 到外部 ASPX 表单会导致 HTTP 405 错误
Posted
技术标签:
【中文标题】在某些情况下,HTTP POST 到外部 ASPX 表单会导致 HTTP 405 错误【英文标题】:HTTP POST to external ASPX form causing a HTTP 405 error in some cases 【发布时间】:2010-10-04 14:32:24 【问题描述】:我有一种情况,我们正在汇总来自 N 个客户端的营销数据,其中客户端可以使用他们选择的任何后端托管 html 表单,每个表单的操作都指向一个路径我们正在托管。每个客户端都有不同的 URL,没有身份验证(但对数据进行了一些简单的验证),而且一切正常。
但是,有一个小皱纹我似乎无法理解。
处理提交数据的 aspx 位于一个路径中,我们称之为 ~/submit/default.aspx。我们的想法是,我们应该能够将类似于“http://sample.com/submit/?foo=bar”的 URL 作为他们表单的操作传递给我们的合作伙伴。但是,这样做会导致 HTTP 405 错误“资源不允许”。
将表单的操作设置为“http://sample.com/submit/default.aspx”可以正常工作。
Default.aspx 被设置为 IIS 6 中的默认文档名称之一。 .aspx 文件扩展名已正确映射到正确的 .Net dll,并为映射激活了动词 GET、HEAd、POST 和 DEBUG。这是我唯一能想到的首先要仔细检查的两件事——其他人有什么想法吗?我更喜欢使用 IIS7 的 URL 重写/路由,但不幸的是,这不是一个选项——而且我有许多额外的要求,其中“干净”的 URL 将非常可取,所以解决这个问题将是一个相当不错的选择要解决的核心问题。
【问题讨论】:
【参考方案1】:IIRC,如果请求的资源是目录,IIS 将只使用默认文档。由于在第一种情况下请求的资源不是,它永远不会通过默认的文档处理程序 - 而是在 POST 到未注册的脚本扩展 (405) 时失败。
【讨论】:
【参考方案2】:它可能取决于“http://sample.com/submit/?foo=bar”的文档类型...如果您的 IIS 不知道如何处理返回给它的文档类型(然后将其返回给您,即客户端),那么您可能会收到 http 405 错误 - 这意味着它不知道如何处理该文档类型,服务器方面。也许尝试把类似的东西 在驱动应用程序的 web.config 文件中。 HTTP 处理程序是模块化的代码片段,用 .net 语言编写和编译,如果您熟悉 Java 术语,它可以充当一种“servlet”。这是一段向客户端写出某些内容的代码——在您的情况下,可能是 .doc 文件的呈现,以编程方式在您的处理程序类中找到。
【讨论】:
【参考方案3】:由于某种原因,它没有呈现我的代码示例!你们需要为您的“您的答案”文本框解码和编码小于和大于符号......无论如何,
<httpHandlers>
<add verb="your.class.to.handle.doc.files"/>
</httpHandlers>
应该在您的 web.config 文件中。
【讨论】:
以上是关于在某些情况下,HTTP POST 到外部 ASPX 表单会导致 HTTP 405 错误的主要内容,如果未能解决你的问题,请参考以下文章
无法获取 http POST 文件上传的进度(Android)