【问题标题】:Check the file type returned by an HTTP GET request检查 HTTP GET 请求返回的文件类型
【发布时间】:2016-03-04 18:26:38
【问题描述】:

您会认为我的问题如此普遍,以至于互联网上都有解决方案。但我找不到任何能真正回答我问题的东西。

让我总结一下我的情况:

  • 我正在使用 Open UI5。
  • 我正在编写一个从各种外部网站检索文档的应用程序。我想在我的应用程序中显示这些文档,而不是导航到它们,所以我在 iframe 中显示这些文档。没有找到其他方法。
  • 某些文件类型可以原生显示,例如 PDF。其他人,如 Word,不能 - 我发现显示这些的最简单方法是使用 Google Docs,这意味着从这里更改 iframe src 的 URL:

http://example.com/my-target-doc.docx

到这里:

http://docs.google.com/gview?url=example.com/my-target-doc.docx&embedded=true

  • 我从中检索文档的一些外部域需要身份验证。因此,我不能直接将 iframe 的 src 设置为 http://docs.google.com/gview?url=example.com/my-target-doc.docx&embedded=true - Google 文档会尝试显示身份验证页面。我必须保留原始 URL,然后在用户通过身份验证后,将文档 URL 替换为同一 URL 的 Google 文档版本。

  • 然后,我要做的是使用 iframe 的“onload”事件来获取当前加载页面的地址,如果是 .doc/.docx/.ppt 等,则替换相同的 URL带有 GD 版本的 URL。

  • 困难在于在指向文档的 URL 末尾没有扩展 - 我需要使用的 URL 都没有以“.doc”、“.ppt”或其他结尾,所以解析网址已失效。

所以这是我的问题:在 Javascript 中有没有办法获取返回内容的类型?公平地说,我很怀疑是否存在。欢迎其他想法或替代方案。我仍在积极寻找一些。

谢谢!

【问题讨论】:

    标签: javascript iframe sapui5


    【解决方案1】:

    您是否已经查看了Content-type HTTP 标头?这可以用 JS 读取,但您可能必须为此异步请求文件。

    【讨论】:

    • 不,我没有。这里的困难是我没有手动发送显式发送 HTTP 请求,它们发生在 iframe 内发生导航时。也许我可以找到一些方法来拦截请求并根据返回的 Content-type 更改它们,尽管我怀疑浏览器的安全约束会允许它。
    • 你能尝试异步执行请求吗(例如使用 jQuery 的.get)?然后,您可以根据内容类型进行适当的重定向。
    • 我现在正在研究 jQuery。我会在周末尝试解决这个问题 - 我会及时通知您。
    • 对延迟回复您表示歉意 - 我正在稍微改变设计,我不会再走这条路了。尝试弄乱 iframe 实在是太繁琐了,因为它违背了它背后的整个想法。尽管如此,还是感谢您的帮助。
    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2017-02-25
    相关资源
    最近更新 更多