1. ホーム
  2. google-chrome

[解決済み] サーバーから受信したヘッダが重複している

2022-07-11 12:58:21

質問

<ブロッククオート

サーバーから受信したヘッダが重複している

サーバーからの応答には、重複したヘッダーが含まれていました。この問題は、一般に Web サイトまたはプロキシの設定が間違っているために発生します。この問題を解決できるのは、Webサイトまたはプロキシの管理者のみです。

エラー 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION)。複数の異なる Content-Disposition ヘッダを受信しました。これは、HTTPレスポンスの分割攻撃から保護するために禁止されています。

クロームでpdfにエクスポートしているときにこのエラーを見つけました。

Response.Buffer = false;
Response.ClearHeaders();
string ext = objProp.PACKAGEFILENAME.Substring(objProp.PACKAGEFILENAME.LastIndexOf("."));
string ext1 = ext.Substring(1);
Response.ContentType = ext1;
Response.AddHeader("Content-Disposition", "target;_blank,attachment; filename=" + objProp.PACKAGEFILENAME);
const int ChunkSize = 1024;
byte[] binary = objProp.PACKAGEDOCUMENT;
System.IO.MemoryStream ms = new System.IO.MemoryStream(binary);
int SizeToWrite = ChunkSize;

for (int i = 0; i < binary.GetUpperBound(0) - 1; i = i + ChunkSize)
{
    if (!Response.IsClientConnected) return;
    if (i + ChunkSize >= binary.Length) SizeToWrite = binary.Length - i;
    byte[] chunk = new byte[SizeToWrite];
    ms.Read(chunk, 0, SizeToWrite);
    Response.BinaryWrite(chunk);
    Response.Flush();
}
Response.Close();

これを修正する方法は?

どのように解決するのですか?

これは少し古いものですが、私は私が見つけた答えを投げるだろうと思ったので、Googleのランキングで上位にあった。 Chrome、pdf 表示、サーバーから受信した重複したヘッダー

基本的に私の問題も、ファイル名にカンマが含まれていることでした。 カンマを削除するために置換を実行すれば、大丈夫です。 有効なファイル名を作成するための私の関数は以下のとおりです。

    public static string MakeValidFileName(string name)
    {
        string invalidChars = Regex.Escape(new string(System.IO.Path.GetInvalidFileNameChars()));
        string invalidReStr = string.Format(@"[{0}]+", invalidChars);
        string replace = Regex.Replace(name, invalidReStr, "_").Replace(";", "").Replace(",", "");
        return replace;
    }