バックエンドでColdFusionを実行し、次のようにページをラップしています。
<cfsavecontent variable="renderedResults"><p>hello</p></cfsavecontent>
<cfscript>
compressedHTML = reReplace(renderedResults, "\>\s+\<", "> <", "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(13), "ALL");
compressedHTML = reReplace(compressedHTML, "\s{2,}", chr(09), "ALL");
variables.alredayBinary = "false";
</cfscript>
<cfif cgi.HTTP_ACCEPT_ENCODING contains "gzip">
<cfinvoke component="services.utils" method="gzip" stringToZip="#compressedHTML#" returnvariable="compressedHTML"></cfinvoke>
<cfheader name="Content-Encoding" value="gzip">
<cfset variables.alredayBinary = "true">
</cfif>
<cfheader name="Content-Type" value="text/html; charset=ISO-8859-1">
<cfheader name="Content-Length" value="#len(compressedHTML)#" >
<cfif variables.alredayBinary EQ "false">
<cfcontent reset="no" variable="#ToBinary(compressedHTML)#" />
<cfelse>
<cfcontent reset="no" variable="#compressedHTML#" />
</cfif>
<cfreturn />
これは私には理にかなっており、最新のブラウザーでは正常に機能しているように見えますが、ユーザーにInternetExplorer6を使用して大量のエラーメッセージを生成させました。
私が受け取っているメッセージは次のとおりです。
The parameter 1 of function ToBinary, which is now <HTML STRING> must be a Base-64 encoded string
これはvariables.alredayBinary = false
、HTML文字列をバイナリエンコードされた文字列に変換する必要があることを示しています。
質問:
私は何をするのか理解できtoBinary
ません。それだけではありません-HTMLを取得して変換しますか?では、なぜエラーなのですか?なぜIE6だけですか?正常に動作しているIE8しかテストできませんでした。
ヒントをありがとう!