public void FilterAndInject(Session oSession) { Debug.Log("FilterAndInject: MatchRule check!" + oSession.fullUrl); // response content type is text/html if (bGlobalEnabled && oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html")) { Debug.Log("FilterAndInject: MatchRule check!"); // request url is match the user's config rules if(this.MatchRule(oSession)) { oSession.utilDecodeResponse(); oSession.utilReplaceOnceInResponse(@"<head>", @"<head><script>" + sScriptText + "</script>", false); // script tag add crossorigin oSession.utilReplaceInResponse(@"<script", @"<script crossorigin "); oSession.oResponse.headers["Cache-Control"] = "no-cache"; oSession.oResponse.headers["Content-Length"] = oSession.responseBodyBytes.Length.ToString(); } } // javascript request, add cross domain header if (oSession.fullUrl.Contains(".js")) { if (oSession.oResponse.headers["Access-Control-Allow-Origin"] == "") { oSession.oResponse.headers["Access-Control-Allow-Origin"] = "*"; } } }