是否可以判断 HTTP 请求是否源自"save link as"操作?



服务器是否有任何方法可以通过右键单击并选择"将链接另存为…"从chrome中的上下文菜单(或其他浏览器中的等效菜单)。

例如,某些标头在一种情况下发送,但在其他情况下不发送。

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


为什么会有人想知道这个

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

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

如果她现在尝试使用上下文菜单,她当然会得到单个文件视图的HTML源,而这通常不是所需的行为(至少在我们的情况下)。

我有一个明显的选择;下载";控件,甚至自定义上下文菜单,但如果我能在服务器上检测到这种情况,我可以传递文件本身,而不是呈现页面,用户可以右键单击>将链接保存为并获取文件内容,列表视图就不必被其他控件弄得一团糟。


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

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

Pragma: no-cache
Cache-Control: no-cache

但你不能依赖它。

以下是您可以做的

假设你有一个这样的文件:

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

此url应始终返回原始文件。例如,该url可以在电子邮件中,也可以在某个论坛上。

要在用户单击您网站上的链接时显示页面,您可以捕获OnClick event(可能还需要进行一些额外的检查),并使用JavaScript:在url中添加一个参数:

http://www.yoursite.com/test.csv?display=html

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

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

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

相关内容

  • 没有找到相关文章

最新更新