javascript - 门控 Assets - 表单提交后自动加载变量 URL

标签 javascript jquery forms

我有 5 个按钮,带有指向不同 Assets (PDF 和其他文件类型)的直接下载 URL。

我希望用户点击一个按钮来下载 Assets ,然后看到一个门控弹出表单,必须填写该表单才能访问 Assets URL。

提交表单后,onSubmit 会自动加载 Assets URL。

我应该如何着手完成这项工作?

我正在使用嵌入到网页弹出窗口/模式中的 Marketo 表单。

我使用 data-toggle="modal"data-target="#myModal" 让下载按钮在点击时打开模式/弹出窗口,这很有效。我的代码如下所示:

<a href="https://example.com/download.pdf" onclick="VSCapture('Download PDF'); loadfile('https://example.com/download.pdf');" data-toggle="modal" data-target="#myModal" style="margin-bottom: 20px;">Download PDF</a>

如何在表单提交后而不是在单击时开始下载?我假设我需要传递变量,但我不确定如何编码。有什么想法吗?谢谢。

最佳答案

如果你真的想要保护它,你应该真正控制这个服务器端。不要在页面上包含 pdf 的 url,而是使用带有提交按钮的表单。表单将发布到服务器,服务器将验证发布的数据,如果一切顺利,将 redirect用户到 pdf 的 url。这种设计意味着用户在不提交有效表单的情况下不可能知道 pdf 的 url。

服务器端重定向的方式取决于您的网络框架。例如,如果您使用 Ruby on Rails,您将使用 redirect_to方法告诉客户端要导航到的 URL。例如:redirect_to('https://www.google.com')

总而言之,这将使用带有 Location 的 302 状态。 URL 的 header ,告诉浏览器下一步要去哪里。

如果您构建 <a>标签就像你在你的帖子中一样,任何人都可以右键单击并在新选项卡中打开你的链接,完全绕过你的 javascript 表单。如果你在数据属性或 javascript 文件中烘焙 url,普通人会更难理解,但任何了解 Web 编程的人仍然可以在不填写表单的情况下轻松绕过它。

归根结底,您只能做这么多来保持人们的诚实。理想情况下,您的服务器每次都会构建某种短暂的 URL,让人们很难相互粘贴链接。但如果人们想窃取,他们只会分享 pdf。盗版是无法打击的,但您可以尽最大努力帮助诚实的人保持诚实,方法是让欺骗系统变得更难一些。

关于javascript - 门控 Assets - 表单提交后自动加载变量 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075756/

相关文章:

javascript - 开关有问题

javascript - deviceReady 在PhoneGap 应用程序中不起作用,怎么办?

javascript - 同时更改所有输入值

javascript - 使用 Jquery append 在点击时呈现部分

javascript - 当我似乎无法重现它时,如何调试此验证错误?

javascript - 在 React Native 中为 AsyncStorage 在 try{}catch{} block 中放入什么

javascript - 脚本未运行 jquery .each

javascript - javascript的元素id

javascript - jQuery 中的复杂表单验证

javascript - 移动 Chrome 浏览器无法访问对象 navigator.mediaDevices