【问题标题】:Redirect unless the page is called from jQuery除非页面是从 jQuery 调用的,否则重定向
【发布时间】:2011-03-31 03:58:11
【问题描述】:

我有一个通过 jQuery 调用动态加载到另一个页面的页面。我想要的是使加载的页面仅在被 jQuery 调用时才可访问,并且如果直接从浏览器地址栏访问则重定向。
我该怎么做?

谢谢!

【问题讨论】:

    标签: php jquery redirect


    【解决方案1】:

    你不能可靠地做到这一点。原因很简单:一切都可以伪造。

    自定义 HTTP 标头可能会也可能不会始终有效,因为某些防火墙会去除所有未知标头。因此,从应该始终工作的角度来看,这将是不可靠的。甚至可以使用诸如 FireFox 扩展“篡改数据”之类的工具手动将它们添加到请求中……所以从始终重定向的角度来看,它也不可靠……

    参数不起作用,因为它们很容易被知道自己在做什么的人伪造。因此,当 jQuery 不调用时,从始终重定向的角度来看,它是不可靠的。

    如果您只是为了方便(而不是从安全角度)这样做,请使用请求参数。如果您将其用于安全性,我建议您提出另一种设计,因为您无法从客户端强制执行任何操作...

    【讨论】:

      【解决方案2】:

      如果请求是 ajax 请求,包括使用 jQuery 发出的请求,则将设置以下内容:

      $_SERVER['HTTP_X_REQUESTED_WITH']
      

      【讨论】:

        【解决方案3】:

        您可以在请求中添加参数。例如jquery=true

        这样您不会强制用户不会直接从传递此参数的地址栏打开,但您可以适当地处理这两种情况。

        【讨论】:

          【解决方案4】:

          当您向页面发送请求并检查页面中的标头时,在 jquery 中添加自定义 http 标头

          【讨论】:

            【解决方案5】:

            当进行 JQuery 调用时,我会设置一些值 - 也许是查询字符串。然后在加载新页面时,我会检查该值是否存在。如果该值存在,则继续加载页面,否则重定向。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多