在ASP.NET中隐藏HTTP请求头指定字段值的可行性咨询
是否可以隐藏HTTP请求中的指定头部字段值?
可以实现对X-MicrosoftAjax头对应值的隐藏,具体操作方式取决于你控制的是请求链路中的哪个节点:
- 如果你是请求发起方,可直接控制请求构造逻辑
- 自行编写的HTTP请求代码(后端客户端、爬虫、前端自定义请求等)可直接修改头字段赋值逻辑,要么删除该头,要么将值替换为你需要的隐藏占位符,只要服务端不会因为头不存在或值不匹配报错即可。
- 如果该头是框架自动生成(比如ASP.NET Ajax框架默认携带该头),可通过拦截框架的请求构造逻辑修改头值,浏览器前端场景下可通过重写
XMLHttpRequest的头设置方法实现拦截:const originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader; XMLHttpRequest.prototype.setRequestHeader = function(headerName, headerValue) { if (headerName.toLowerCase() === 'x-microsoftajax') { // 替换原始值为自定义隐藏内容 headerValue = '***'; } originalSetRequestHeader.call(this, headerName, headerValue); }
- 如果你是请求的中转方(代理、网关)
可在请求转发到上游前直接修改该请求头的值,抹除原始的敏感内容后再转发。 - 如果你是想要避免头值在传输过程中被第三方窃取
直接将请求升级为HTTPS协议即可,HTTPS会对整个HTTP报文(包括所有请求头、请求体)进行加密传输,中间链路的第三方无法读取到明文的头字段内容。
注意:如果服务端对X-MicrosoftAjax头的值有校验逻辑,修改或删除该值可能导致请求被拦截、业务功能失效,调整前请先确认服务端的校验规则。
内容的提问来源于stack exchange,提问作者Fatman123
相关产品推荐
相关产品推荐

