【问题标题】:Gated Assets - Auto-loading variable URL after Form Submit门控资产 - 提交表单后自动加载变量 URL
【发布时间】:2023-03-04 18:13:01
【问题描述】:

我有 5 个按钮,其中包含不同资产(PDF 和其他文件类型)的直接下载 URL。

我希望用户单击一个按钮下载资产,然后显示一个封闭的弹出表单,必须填写该表单才能访问资产 URL。

提交表单后,onSubmit 会自动加载资产 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>

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

【问题讨论】:

    标签: javascript jquery forms


    【解决方案1】:

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

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

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

    如果您像在帖子中那样构建&lt;a&gt; 标签,任何人都可以直接右键单击并在新选项卡中打开您的链接,完全绕过您的 JavaScript 表单。如果您将 url 烘焙到数据属性或您的 javascript 文件中,普通人将很难弄清楚,但任何了解 Web 编程的人仍然可以轻松绕过它而无需填写表格。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2011-10-11
      • 1970-01-01
      相关资源
      最近更新 更多