迁移期间如何在IIS 8.5或web.config中阻止非GET请求?
在IIS 8.5上仅允许GET请求的实现方案
完全可以在IIS 8.5或web.config层面实现拦截非GET请求的需求,以下是几种实用的方案:
方案一:通过URL重写模块拦截非GET请求
如果你的服务器安装了IIS URL重写模块(可通过服务器管理器添加),可以直接在web.config中添加规则,拦截所有非GET请求并返回明确的错误状态码:
<system.webServer> <rewrite> <rules> <rule name="Block Non-GET Requests" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{REQUEST_METHOD}" pattern="^GET$" negate="true" /> </conditions> <action type="CustomResponse" statusCode="405" statusReason="Method Not Allowed" statusDescription="Only GET requests are permitted during migration." /> </rule> </rules> </rewrite> </system.webServer>
这个规则会匹配所有请求路径,当请求方法不是GET时,立即返回405状态码,清晰告知调用方当前仅允许GET请求。
方案二:利用IIS请求筛选模块限制HTTP谓词
请求筛选是IIS自带的安全功能,不需要额外安装模块,既可以通过web.config配置,也能通过IIS图形界面操作:
1. web.config配置方式
直接在站点的web.config中添加以下配置,明确允许GET,拒绝POST、PUT、DELETE等方法:
<system.webServer> <security> <requestFiltering> <verbs applyToWebDAV="false"> <add verb="GET" allowed="true" /> <add verb="POST" allowed="false" /> <add verb="PUT" allowed="false" /> <add verb="DELETE" allowed="false" /> <!-- 如有需要,可继续添加PATCH等其他需阻止的HTTP方法 --> </verbs> </requestFiltering> </security> </system.webServer>
applyToWebDAV="false"参数用于避免规则影响WebDAV请求(未启用WebDAV的话也可保留)。
2. IIS图形界面操作步骤
- 打开IIS管理器,定位到你的API站点。
- 双击功能视图中的请求筛选。
- 在右侧操作栏点击HTTP谓词。
- 选择允许谓词,输入
GET后确认,此时所有未被允许的谓词都会被自动拒绝;或者选择拒绝谓词,逐个添加POST、PUT、DELETE等需要拦截的方法。 - 点击右侧的应用保存配置即可生效。
注意事项
- 若使用URL重写方案,需确保服务器已安装URL重写模块,未安装的话可通过服务器管理器的Web服务器角色功能添加。
- 配置完成后建议用Postman、curl等工具测试非GET请求,确认是否返回预期的405或403状态码。
- 迁移完成后,务必及时移除这些规则,恢复正常的请求方法权限。
内容的提问来源于stack exchange,提问作者Bargant
相关产品推荐
相关产品推荐

