今天在进行WebView2开发时,遇到需要不知道源代码的情况下,更新界面中的图片以及颜色方案,解决的思路是在TWebResourceRequestedEvent事件中进行hook,然后完成颜色方案的修改,但是在开发的时候,发现浏览器请求回来的数据中会包含Headers,但是这个Headers中包含Content-MD5,这个Content-MD5就是对请求返回来的源数据进行MD5签名,浏览器的规则是请求回来的数据你可以Hook修改,但是Headers是不能修改的!
这样就导致了后台发送数据包含Content-MD5 Header时,数据就进行了签名,此时修改的内容如果和签名不一样就,浏览器就不会进行响应。
IWebResourceRequest = interface
function ContainsHeader(const Name: string): Boolean;
procedure RemoveHeader(const Name: string);
property Content: TByteDynArray read write;
property Header[const Name: string]: string read write;
property Headers: THeaders read;
property Method: string read write;
property Uri: string read write;
property WebResourceRequest: ICoreWebView2WebResourceRequest read;
end;