2

我有一个两部分的问题。第一个我认为我有一个好的答案......

我希望强制调用一个外部程序来查看我公司正在开发的应用程序的配置文件。我猜的基本要点是将 Content-type 标头设置为与您的应用程序关联的类型,然后提供文件的内容。我在想它的结构很简单:

<?php
Header( "Content-type: application/blahtype" );
?>
output of xml configuration file goes here...

这里还有其他最佳实践吗?显然,用户将不得不允许外部应用程序在所有浏览器中普遍访问此文件,除非他们在浏览器中安装了一个插件来处理内容类型,如 adobe pdf。目前这对我们公司来说是不可行的,所以我们愿意接受确认屏幕。

我认为问题的第二部分有点复杂。我们如何检测用户是否安装了应用程序,如果没有,则为他们提供不同的内容(注册页面或应用程序可执行文件本身)?我不是想知道提供不同内容的后勤工作,而只是想知道检测过程。应用程序是否可以在机器上安装的浏览器缓存中安装终身 cookie?这不是一个完美的解决方案,因为用户当然可以清除他们的缓存。我们还能如何做到这一点?

执行此操作的程序示例是 Amazon MP3 Downloader(我实际上已经陷入了一次或两次糟糕的状态)和 iTunes U。您可以在 Stanfords CS193P 页面上查看 iTunes U 示例:http://www.stanford .edu/class/cs193p/cgi-bin/index.php

非常感谢任何建议,乔希

4

2 回答 2

3

对于您问题的第 1 部分,只要您的应用程序已正确注册以处理该 MIME 类型,那么,是的,浏览器应该 [提示用户并启动您的应用程序]( http://msdn.microsoft.com/en- us/library/ms775148(VS.85).aspx “MSDN:在 Internet Explorer 中处理 MIME 类型”)。

另一种方法是[协议处理程序](http://msdn.microsoft.com/en-us/library/aa767914 (VS.85).aspx “MSDN:将应用程序注册到 URL 协议”)。您无需为您的应用程序注册 MIME 类型,而是在 URL 中注册一个“协议”,代替http://. 如果您的协议被调用myapp,那么您可以创建如下链接:

<a href="myapp:data-goes-here-urlencoded">Link</a>

虽然您只能通过这种方式传递少量信息,但您可以传递一个 GUID 或标记,应用程序一旦启动,就可以使用它从您的服务器检索完整文档。

编辑:对于您问题的第 2 部分,iTunes 使用插件。查看用于重定向到 iTunes 的代码,您会看到如下内容:

<Object id="iTunesDetector" height="1" classID="CLSID:D719897A-B07A-4C0C-AEA9-9B663A28DFCB" width="1"></Object>

随后是一些 JavaScript 来检测是否加载了该插件。如果是,则必须安装 iTunes 并使用itms:协议启动 iTunes(就像myapp:上面示例中的协议一样)。

这里的问题是,您必须编写一个浏览器插件。

于 2009-08-12T17:39:19.257 回答
0

考虑使用浏览器扩展来处理这样的事情可能是个好主意。

于 2009-08-12T17:20:28.703 回答