128

サーバーから重複したヘッダーを受信しました

サーバーからの応答に重複したヘッダーが含まれていました。この問題は、通常、Web サイトまたはプロキシの構成ミスが原因です。この問題を解決できるのは、Web サイトまたはプロキシの管理者だけです。

エラー 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): 複数の異なる Content-Disposition ヘッダーを受信しました。これは、HTTP 応答分割攻撃から保護するために許可されていません。

Chromeで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();

これを修正する方法は?

4

5 に答える 5

248

これは少し古いですが、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;
    }
于 2013-02-12T16:10:57.840 に答える
106

サーバーは、@cusman と @Touko が返信で述べているように、ファイル名を二重引用符で囲む必要があります

例えば:

Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
于 2014-09-15T08:46:26.050 に答える
6

次のように、ファイル名を二重引用符で囲みます。

this.Response.AddHeader("Content-disposition", $"attachment; filename=\"{outputFileName}\"");

于 2016-02-29T22:54:27.107 に答える
6

私にとって問題は、ファイル名ではなく以下のようなカンマに関するものでした: -

Response.ok(streamingOutput,MediaType.APPLICATION_OCTET_STREAM_TYPE).header("content-disposition", " attachment, filename =your_file_name").build();

貼り付け後に誤ってコンマを入れてしまいました。コンマをセミコロンに置き換えることで解決しました。

于 2017-06-28T18:34:50.580 に答える
2

ヘッダー内のファイル名を二重引用符で囲むことは、 MDN Web ドキュメントの標準です。 引用符を省略すると、ファイル名の文字に起因する問題が発生する可能性が複数発生します。

于 2019-01-13T11:38:06.630 に答える