繁体   English   中英

如何只允许一种方法或Web服务的GET请求?

[英]How do I allow the GET request for only one method or webservice?

正如我在这里发现的那样 ,我可以更改webconfig以允许/禁止webservices中的方法。

我只需要一种方法成为GET,对于其他方法则应该是POST,是否有一种方法可以仅配置一种方法(如果没有其他方法,则可以配置Web服务)以接受GET请求? 我在IIS7上。

取决于Web服务器。

例如,您可以针对Apache中的某些请求返回错误。

使用Limit指令:

<Directory />
  Options All
  AllowOverride All
  <Limit POST PUT DELETE CONNECT PROPFIND PROPPATCH>
    # Require valid-user
    Deny from all
  </Limit>
</Directory>

编辑 -刚刚找到有关此文档: http : //httpd.apache.org/docs/2.0/mod/core.html#limit

您可以通过在IIS中或通过web.config中定义的httpHandler映射更改处理程序映射来完成此操作。

或者,您可以让HttpModule做到这一点。

但是,由于您已经在使用asp.net(通过标签进行判断),并且只有一个例外,所以一种更简单的方法可能就是在该级别上进行。 如果不是,则从HttpModule执行此操作的逻辑几乎相同。

在您的页面基类中(如果尚未在System.Web.UI.Control.Page和您自己的页面之间定义抽象类,可能值得一看,这是放置常用方法的方便位置)一个在主页面加载处理程序之前被调用的虚拟成员(例如,有一个名为OnLoad的方法先调用此方法,然后再调用“真实”页面加载方法)。

在此方法中,检查使用的http方法,如果不正确,则将状态代码设置为405,输出错误页面以显示加分标记,然后停止所有处理。

在允许获取,覆盖和更改检查方法的页面中。

如果您的类结构不允许轻松完成此操作,则HttpModule方法将更容易。 在这里,您必须检查URI才能知道允许使用哪种方法,但是其余的几乎相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM