如何在IIS服务器中为Django RestAPI忽略HTTP_X_ORIGINAL_URL请求头
在IIS中为Django RestAPI忽略HTTP_X_ORIGINAL_URL请求头
要实现当请求包含X_ORIGINAL_URL头时让Django忽略它,你可以通过IIS的URL重写规则清空对应的服务器变量,阻止其传递给Django应用。以下是基于你现有规则的修改方案,以及独立规则的配置方式:
方案一:修改现有入站规则
针对你已有的"set server variables"规则,添加条件检查请求头,并追加清空服务器变量的动作:
修改后的规则配置
ADD Inbound rules Rule name: "set server variables" Requested URL: "Matches the Pattern" Using: "Regular Expressions" Pattern: "^([a-z]{2}-[a-z]{2})/(.*)" Conditions: - Input: "{Languages:{R:1}}" Type: "Matches the Patterns" Pattern: "(.+)" - Input: "{HTTP_X_ORIGINAL_URL}" Type: "Exists" Negate: False Action: - Type: "Rewrite" Rewrite URL: "{R:2}" - Type: "Set Server Variable" Name: "HTTP_X_ORIGINAL_URL" Value: "" Replace: True
配置步骤
- 打开IIS管理器,定位到目标网站,进入URL重写模块。
- 找到"set server variables"规则,点击编辑。
- 在条件区域,点击添加,输入
{HTTP_X_ORIGINAL_URL},选择类型为"Exists",保持Negate为False。 - 在动作区域,点击添加,选择类型为"Set Server Variable",名称填
HTTP_X_ORIGINAL_URL,值设为空字符串,勾选"Replace"。 - 保存规则后,需要允许修改该服务器变量:
- 在URL重写模块右侧,点击View Server Variables。
- 点击Add,输入
HTTP_X_ORIGINAL_URL,确认保存。
方案二:添加独立忽略规则
如果不需要依赖原有规则,可单独创建一条规则专门处理X_ORIGINAL_URL头:
规则配置
ADD Inbound rules Rule name: "Ignore X_ORIGINAL_URL Header" Requested URL: "Matches the Pattern" Using: "Regular Expressions" Pattern: ".*" Conditions: - Input: "{HTTP_X_ORIGINAL_URL}" Type: "Exists" Negate: False Action: Type: "Set Server Variable" Name: "HTTP_X_ORIGINAL_URL" Value: "" Replace: True
说明
这条规则会匹配所有包含X_ORIGINAL_URL头的请求,直接将对应的服务器变量清空。Django接收到请求时,将无法读取到该头的内容,从而达到忽略的效果。
配置完成后,用Postman携带X_ORIGINAL_URL头调用API时,IIS会自动处理该头,Django将按实际请求路径处理接口。
内容的提问来源于stack exchange,提问作者indranil saha
相关产品推荐
相关产品推荐

