是否可以判断HTTP请求是否来自"保存链接为"动作?

时间:2015-12-26 01:43:51

标签: http browser http-headers

服务器是否有办法通过右键单击并选择"从上下文菜单中将链接保存为..." 来确定是否已启动特定HTTP请求在chrome(或其在其他浏览器中的等价物)。

例如,某个标题在一个方案中发送但在其他方案中不发送。

我最初的预感是答案是否定的,但尝试这种行为会很有趣。

为什么有人想知道这个?

作为一个简化示例,假设我们有一个文件列表的视图,其中每个文件链接到另一个视图,该视图基本上可以打印文件内容,以及一些元数据,并提供下载它们的能力。

有时用户只想保存其中一些,并且必须在项目视图和列表之间来回。

如果她现在尝试使用上下文菜单,那么她会得到单文件视图的HTML源代码,当然,这通常不是理想的行为(至少在我们的例子中) )。

我有明显的选择添加"下载"控制列表中的每个项目,甚至是自定义上下文菜单,但如果我能在服务器上检测到这种情况,我可以自己传送文件而不是呈现页面,用户可以右键单击> save-link-as 并获取文件内容,列表视图不会被其他控件混乱。

我希望GitHub上存在这种类型的功能(直接从文件列表中保存文件)或Moodle(一个课程管理平台),所以我希望在我控制的地方节省一些挫折感。

1 个答案:

答案 0 :(得分:1)

发送到服务器的请求没有什么区别,除了添加了一些标头(Firefox):

http://www.yoursite.com/test.csv

但你不能依赖它。

以下是您可以做的事情

假设您有这样的文件:

OnClick event

此网址应始终返回原始文件。例如,该网址可能位于电子邮件中,也可能位于某个论坛上。

要在用户点击您网站上的该链接时显示页面,您可以抓住http://www.yoursite.com/test.csv?display=html (并执行一些额外检查),并使用JavaScript向网址添加参数:

{{1}}

然后您的服务器可以返回您想要的html页面(如果在浏览器中关闭JavaScript,则不会造成任何损害,文件将按原样返回。)

  

我希望GitHub上存在这种类型的功能(直接从文件列表中保存文件)或Moodle(一个课程管理平台),所以我希望在我控制的地方节省一些挫折感。

这确实很烦人。很高兴看到有人关注这些细节。