我用Charles修改请求头的Origin
,结果发现浏览器这边总是显示没有修改成功。但我用Charles看请求详情,看到已经修改。看截图。
左边是Charles,右边Chrome控制台。
实际上后端读取的是修改后的Origin(修改前接口没数据,修改后有数据。),说明问题出在浏览器控制台。
但为什么浏览器不展示修改过的请求头呢?
自己考虑了一下,一个可能的解释是:请求(只有请求头相关数据)先经过浏览器,再经过Charles,再到后端,然后后端传(只有响应头相关数据和body数据)给Charles,再传给浏览器。
有没有HTTP比较熟悉的朋友出来解释下?
你的想法是正确的。这个跟熟悉不熟悉HTTP关系不大。
请求是浏览器发出的,然后经过代理(Charles),然后到服务器,然后再经过代理(Charles),然后到浏览器。
所以浏览器发出的原始数据,被代理拦截,并修改。浏览器肯定不会知道这事。
你可以尝试下修改响应头,或响应体。浏览器肯定会展示被篡改的数据。