IE11 无法通过 Web 服务器显示带有对象标记的图像,但在本地正常

2024-02-02

问题:通过对象标签将图像设置作为数据查看时,Internet Explorer 11 在通过 Web 服务器查看时不会显示该图像。这是完整的代码:

<!DOCTYPE html>
<html>
<head></head>
<body>
<div style="width:200px; height:100px"><img src="../../square.svg"/></div>
<div style="width:200px; height:100px"><embed src="../../square.svg"></div>
<div style="width:200px; height:100px"><object data="../../square.svg" type="image/svg+xml">Nope</object></div>
</body>
</html>

对于 Firefox 28/Chrome 34,如果我转到该文档的 URL 或在本地打开该文档,所有 3 个方块都会显示。对于 Internet Explorer 11,在本地查看时,这些方块将全部显示。通过网络服务器查看时,只会出现前两个方块。第三次我得到“不”。我确实尝试使用 .png 来查看它是否与 .svg 相关,但我得到了相同的结果。最后,Firefox/Chrome 开发者工具的网络选项卡显示 GET 返回“svg”类型,但 IE 开发者工具显示返回类型“text/html”并中止。是网络服务器的问题,还是我做错了什么?

为了添加更多细节,我在尝试解决另一个问题时遇到了这个问题。所有这一切的最终目标是让外部 .svg 图像填充其容器(不保持其纵横比不变)。 Firefox 似乎将 .svgs 视为 标签中的普通图像,我可以像平常一样拉伸它们。 Chrome 似乎想保持其宽高比,而 IE 则一团糟。我希望通过将它们转换为 我可以强制 .svgs 更多一点,但我无法达到这一点进行测试。

编辑:嗯,我无法弄清楚这个问题,但我确实找到了实现我最初目标的解决方案。我使用 ajax 请求拉取 .svg 图像,修改 viewBox/preserveAspectRatio/width 和 height 属性,然后将 svg 对象内联。它很恶心,并且在缓存方面确实伤害了我,但它适用于我计划支持的所有浏览器。

请求标头成功:

GET http://127.0.0.1/file/square.svg HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://127.0.0.1/file/xxx/xxx/index3.html
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: 127.0.0.1
If-Modified-Since: Fri, 18 Apr 2014 03:31:10 GMT
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: vendor_session=xxx

响应成功:

HTTP/1.1 304 Not Modified
content-type: image/svg+xml; charset=UTF-8
last-modified: Fri, 18 Apr 2014 03:31:10 GMT
date: Sat, 19 Apr 2014 01:23:12 GMT
cache-control: private, must-revalidate, max-age=86400
expires: Thu, 01 Jan 1970 00:00:00 GMT
content-length: 0
server: Vendor Web Server/Version

请求失败:

HEAD http://127.0.0.1/file/square.svg HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: 127.0.0.1
Content-Length: 0
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: vendor_session=xxx

响应失败:

HTTP/1.1 405 Method Not Allowed
content-type: text/html; charset=UTF-8
date: Sat, 19 Apr 2014 01:33:01 GMT
cache-control: private, must-revalidate
expires: Thu, 01 Jan 1970 00:00:00 GMT
content-length: 839
server: Vendor Web Server/Version

这里的问题是 IE 发出HEAD请求确定目标资源的内容类型。您的服务器配置为拒绝 HEAD 请求(这是一个错误的配置),因此会导致 HTTP 错误而不是正确的响应。

You may可以通过更改标签来避免此请求:

<object data="../../square.svg" classid="clsid:30590066-98b5-11cf-bb82-00aa00bdce0b" type="image/svg+xml">Nope</object>

...但我可能只是重新配置服务器以不禁止 HEAD 方法。

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

IE11 无法通过 Web 服务器显示带有对象标记的图像,但在本地正常 的相关文章

随机推荐

  • 在 jQuery 中向给定日期添加天数[重复]

    这个问题在这里已经有答案了 我有一个包含三个字段的表单 start date days end date 我想通过在开始日期上添加天数来获取结束日期 我的 jQuery 代码是 days change function var start
  • 硬件断点始终为 EXCEPTION_SINGLE_STEP

    我有一个充当调试器的程序 我为线程设置了一个 hw bp 将 dr0 设置为我想要 bp 所在的地址 并将 dr7 设置为 1 因为我希望 bp 在每次执行该地址时生成一个事件 它有效 但现在的问题是我一直没有停止接收 EXCEPTION
  • 当我尝试在 Excel 工作表上运行查询时出现“名称无效括号”错误

    为了制作一些报告 我需要解析一些 Excel 文件 当我尝试从工作表中选择记录时 出现下一个错误 名称 1 的括号无效 页 这是我的代码 OleDbDataAdapter myCommand new OleDbDataAdapter SEL
  • 如何使用泛型来替代一堆处理不同类型的重载方法?

    我有一堆重载方法 它们都获取某种类型的数组作为参数 并从该数组返回一个随机值 function GetRandomValueFromArray Arr array of String String overload begin Result
  • .NET Core - 更改控制器中的依赖关系

    我正在开发一个 Web 应用程序 net core 2 2 并尝试替换控制器中对查询字符串参数的现有依赖项 我知道 可以替换 Startup cs 中的依赖项 ConfigureServices IServiceCollection ser
  • 插入(I,[],[I,[],[]])。如何向二叉树插入一个值?

    要将新元素添加到堆中 我们必须 创建一个包含该元素值的节点 在最后一层的第一个空位置尽可能向左打结 如有必要 创建一个新层 我们总是得到一个完整的二叉树 但不一定是一个堆 我写了这段代码 insert I I insert I G D N
  • 当我尝试使用 winrt 发出通知时,出现错误

    我正在尝试让 winRT 发送通知 我尝试这样做来发出通知 import winrt windows ui notifications as notifications import winrt windows data xml dom a
  • 使用 PPSE 而不是 PSE 读取 EMV 卡

    我正在尝试读取非接触式 Visa Paywave 卡上的数据 对于 Paywave 我必须使用 PPSE 2PAY SYS DDF01 而不是 PSE 1PAY SYS DDF01 提交 SELECT EMV 书籍 1 第 11 3 4 节
  • 选择 ..... 其中 .... 或

    有没有一种方法可以选择同一字段上出现多个条件中的任何一个的数据 示例 我通常会写一个声明 例如 select from TABLE where field 1 or field 2 or field 3 有没有办法可以这样说 select
  • 单向 @OnetoMany 映射会删除所有关系并重新添加剩余关系,而不是删除特定关系

    给出以下代码 public class Course Id GeneratedValue private Long id private String name OneToMany cascade CascadeType ALL orpha
  • (a== 1 && a ==2 && a==3) 可以评估为 true 吗?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 版主注 请抵制编辑代码或删除此通知的冲动 空白模式可能是问题的一部分 因此不应被不必要地篡改 如果您属于 空白无关紧要 阵营
  • move_uploaded_file 在 nginx 下创建无法访问(403禁止)的文件

    我在 php 中创建了一个简单的上传脚本 该脚本获取从表单提交的文件并将其放入所需的目录中 问题是 由于某种原因 当您尝试在浏览器中显示此文件时 服务器会返回 403 Forbidden 消息 事实上 我修改了脚本 因此它首先从 tmp 文
  • 在没有 jQuery mobile 的情况下在移动设备上使用 mousedown 事件?

    我已经构建了一个 Web 应用程序 为了进行一些改进 我想添加 mousedown 和 mouseup 处理程序来交换图像 在本例中 使按钮看起来像是被按下的 我的代码是这样的 window onload function preload
  • 我可以创建一个 Android 应用程序作为模板吗?

    我不确定它的标题是否正确 但我会解释我的意思 我正在制作多个 Android 应用程序 但它们具有相同的结构 滑动菜单 列表视图 关于我 服装对话框 复制 分享 喜欢 对样式进行一些修改 颜色 背景 字体 菜单字符串 我的问题是 有没有办法
  • JSON Jackson 将不同的键解析到同一字段中

    我有一个 POJO 其中有一个字段 public class Media private Asset asset 将 json 响应解析到此资产 POJO 中时 一切正常 但该资产附带的密钥略有不同 它可以是 JsonProperty co
  • 同时进行网页插入

    我们开发了一个在线测验 用户可以注册一个团队来参加测验 在 asp 中会检查该团队名称是否已提交 如果已提交 则会生成错误 我们注意到一个问题 如果两支球队在同一时间以相同的名称注册 则两支球队都注册了 尽管这种情况不太可能发生 但我们想知
  • 如何比较以逗号分隔的两个列值?

    我有一个包含特定列的表 其中有一列包含逗号分隔的值 例如测试 考试 结果 其他 我将传递一个字符串 例如结果 样本 未知 额外作为存储过程的参数 然后我想通过检查该字符串中的每个短语来获取相关记录 例如 TableA ID Name Wor
  • GCM 不致力于姜饼,但致力于冰淇淋三明治

    我正在编写一个使用 GCM 消息的游戏 当一名玩家进入服务器的回合移动时 服务器将向其对手发送一条 GCM 消息 让该客户端知道有额外的回合数据可用 这应该很简单 我已尽可能严格地遵循示例 GCM 客户端代码 我有两台设备用于测试 带冰淇淋
  • 使用 PyCrypto AES 进行 Python 加密

    我今天刚刚发现 pycrypto 并且一直在研究我的 AES 加密课程 不幸的是 它只起到了一半的作用 self h md5 以十六进制格式输出 md5 哈希值 大小为 32 字节 这是输出 它似乎解密了消息 但它在解密后放置了随机字符 在
  • IE11 无法通过 Web 服务器显示带有对象标记的图像,但在本地正常

    问题 通过对象标签将图像设置作为数据查看时 Internet Explorer 11 在通过 Web 服务器查看时不会显示该图像 这是完整的代码 div style width 200px height 100px img src squa