使用 IHttpHandler 时 Firefox 无法正确处理内容类型

2024-03-28

由于某种原因,Firefox 无法正确处理通过我的 .NET HTTP 处理程序发送的内容;它似乎不遵守内容类型标头。相反,它将内容视为 HTML。映射到请求的 URL 甚至具有 .csv 扩展名。 Internet Explorer 和 Chrome 正在做正确的事情。 “text/css”和“application/pdf”处理程序都会出现此问题。

这是我的 HTTP 处理程序的 ProcessRequest 方法的片段:

public void ProcessRequest(HttpContext context)
{
    // ...

    // Set the output headers
    context.Response.ClearHeaders();
    context.Response.ContentType = "text/csv";
    context.Response.AddHeader(
        "Content-Disposition", "attachment; filename=foo.csv");

    // Code that writes to the output stream
    // ...

    context.Response.End();
}

我的回复中缺少哪些内容可以让 Firefox 按预期识别内容类型?

Edit 1:

当使用 Firefox Live HTTP Headers 扩展时,我看到,我得到了以下标头。看起来我的 ContentType 标头丢失了。

HTTP/1.x 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Thu, 31 Dec 2009 02:34:09 GMT
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment;filename="foo.csv"
Cache-Control: private
Content-Type: text/html
Content-Length: 66682
Connection: Close

Edit 2:

发现问题了。在我的处理程序中,我正在使用context.Server.Execute从 ASPX 模板生成 HTML,然后处理该 HTML。换句话说,我没有使用context. Server.Execute直接输出到响应。尽管如此,运行该方法会修改当前上下文的响应标头。所以这是撤销我设置的标题。将修改 header 的代码移到后面context.Server.Execute解决了问题。

这只影响 Firefox 的原因是其他浏览器使用文件扩展名而不是内容类型。 Firefox 做了正确的事。


这确实看起来很奇怪。我会安装实时 HTTP 标头 https://addons.mozilla.org/firefox/addon/3829Firefox 的附加组件只是为了确认 Firefox 确实按照您的预期看到了这两个标头。

RFC 2616 似乎也建议在文件名周围加上引号 https://www.rfc-editor.org/rfc/rfc2616#section-19.5.1,所以你也可以尝试一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 IHttpHandler 时 Firefox 无法正确处理内容类型 的相关文章

随机推荐

  • PHP - 小时差(HH:MM 格式)

    我正在尝试计算在这里工作的人的轮班模式 从结束时间中减去开始时间在很大程度上是可行的 但如果他们通宵工作则不行 例如某人工作于10pm to 6am将显示为 22 00 06 00 我希望它能回来8 hours 但我就是想不出最好的方法 令
  • 谷歌图表趋势线未显示

    我有一个 Google 图表折线图 我想在其上显示趋势线 但它没有显示 数据是从数据库中获取的 而 JavaScript 是由 PHP 生成的 但生成的 JavaScript 如下所示
  • LINQ 查询中的分组依据

    我有一个 DataTable 我想在其中执行 GroupBy 查询 year url type id someurl image 0 2003 date 0 someurl image 1 2009 date 1 我已成功对我的 ID 进行
  • WPF 动画“无法冻结此情节提要时间线树以供跨线程使用”

    我当前有一个列表框 其所选项目绑定到我的 ViewModel 上的属性 每当所选项目不为空时 我想对其执行动画 但是我不断收到以下错误 无法冻结此情节提要时间线树以供跨线程使用 并通过研究了解为什么会发生这种情况 但是我不确定需要采取什么方
  • 如何分组并获取具有 X max 的 Y 列的值? [复制]

    这个问题在这里已经有答案了 我有一个以前从未遇到过的用例 我有以下数据框 并且想要选择 y 的值 其中 x 分别为条件 i 的每个级别实现其最小值和最大值 gt library dplyr gt df lt data frame i c 1
  • 在 ubuntu 20.04 上运行 Tensorflow 时出现“无法加载动态库 'libcudnn.so.8'”

    注意 有很多类似的问题 但是针对不同版本的 ubuntu 和有些不同的特定库 我一直无法弄清楚符号链接 其他环境变量的组合 例如LD LIBRARY PATH会工作 这是我的nvidia配置 nvidia smi Tue Apr 6 11
  • 相当于 dash shell 中的 pipelinefail

    有没有类似的选项dash外壳对应于pipefail in bash 或者如果管道中的命令之一失败 但不退出 则获得非零状态的任何其他方式 set e would 为了更清楚地说明这一点 这是我想要实现的目标的示例 在示例调试 makefil
  • 在 Slack 中合并消息菜单和消息按钮

    我想在我的 Slack 应用程序中结合消息菜单和消息按钮 这是我想要实现的工作流程 1 用户发出斜杠命令来显示菜单 该菜单将有一个下拉菜单和三个按钮 这是我能够实现的 2 我希望用户从下拉列表中选择一个选项 然后按任何操作按钮 然后只应触发
  • Warshall算法思想及改进[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 Warshall Floyd 算法 https en wikipedia org wiki Floyd E2 80 93Warshall a
  • 基于点的线/平面相交

    我在空间中有两个点 L1 和 L2 它们定义了一条线上的两个点 我在空间中有三个点 P1 P2 和 P3 这三个点在平面上 那么给定这些输入 直线在什么点与平面相交 外汇 平面方程 A x B y C z D 0 为 A p1 Y p2 Z
  • 我可以让一个标识字段跨越 SQL Server 中的多个表吗?

    我可以有一个跨多个表的 身份 唯一的 非重复的 列吗 例如 假设我有两个表 书籍和作者 Authors AuthorID AuthorName Books BookID BookTitle BookID 列和AuthorID 列是标识列 我
  • 检测滚动方向

    所以我尝试使用 JavaScripton scroll调用函数 但我想知道是否可以在不使用 jQuery 的情况下检测滚动的方向 如果没有那么有什么解决方法吗 我本来想只放一个 到顶部 按钮 但如果可以的话我想避免这种情况 我现在刚刚尝试使
  • Winsock,仅接受来自特定IP地址的请求

    如何使 Winsock 程序仅接受来自特定地址的连接请求 我希望完全忽略被拒绝的连接 而不是得到 TCP 拒绝 要使 Winsock 程序仅接受来自特定 IP 地址的连接 请使用以下条件接受机制WSAAccept http msdn mic
  • jQuery 事件在 asp.net mvc(4) 第二部分中的部分视图发布后停止工作

    I have a View with the following layout The parent View is composed of several PartialViews One of which is a list where
  • 将 Grails 2.1.1 应用程序部署到 Tomcat 作为爆炸战争?

    我正在尝试在 OpenShift 上部署 Grails 应用程序 并且尝试避免每次更改都在网络上推送 50MB 的文件 我创建了一个项目 dev apps grails test测试它 基于这个答案 https stackoverflow
  • 如何使用批处理文件运行R语言(.r)文件?

    我想使用批处理文件运行 R 脚本文件 r 如果 R exe 在您的 PATH 中 那么您的 Windows 批处理文件 bat 将仅包含一行 R CMD BATCH your r script R 否则 您需要给出 R exe 的路径 例如
  • 为什么 Numba 的“急切编译”会减慢执行速度

    附上一个最小的例子 from numba import jit import numba as nb import numpy as np jit nb float64 nb int32 def go fast a trace 0 0 fo
  • jQuery DataTables 多选列过滤器

    我想要得到的是类似于 Excel 的针对各个 DataTables 列的多条件过滤 我在 stackoverflow 上遇到了一些与该主题相关的主题 但这些主题似乎都没有实现我正在寻找的内容 到目前为止 我只有样本表 我很感激任何有关下一步
  • NGINX 反向代理:许多 html 状态代码 400 响应,为什么?

    我们最近实现了一个基于 nginx 的反向代理 在调试访问日志时 我们看到大量状态代码 400 结果 它们看起来像这样 07 Sep 2011 05 49 04 0700 400 0 我们启用了调试错误日志记录 它们通常对应于这样的内容 2
  • 使用 IHttpHandler 时 Firefox 无法正确处理内容类型

    由于某种原因 Firefox 无法正确处理通过我的 NET HTTP 处理程序发送的内容 它似乎不遵守内容类型标头 相反 它将内容视为 HTML 映射到请求的 URL 甚至具有 csv 扩展名 Internet Explorer 和 Chr