【问题标题】:Redirect from typing URL in address bar通过在地址栏中输入 URL 进行重定向
【发布时间】:2020-03-11 01:56:11
【问题描述】:

让我们从一个例子开始, 我有域 (abc.com),并且有页面 abc.com/data-list。 我想禁止用户在地址栏中输入 abc.com/data-list,因为我使用 javascript 访问内容部分或刷新内容部分而不刷新母版页。因此,浏览器中的 URL 不会改变并停留在 abc.com,但内容会发生变化。如果用户在地址栏中键入 abc.com/data-list,则不会加载母版页,并且仅显示母版页中没有 css 或 js 的内容。有什么想法吗?

如何通过在地址栏中输入重定向 url?例如:如果用户键入 abc.com/data-list,它将重定向到 abc.com,但如果从后端访问 abc.com/data-list(如从 href),则不会重定向到 abc.com

或者任何正确的方法来实现只刷新内容而不刷新带有 url 更改的母版页取决于它的内容?

谢谢

【问题讨论】:

  • 可以检测是否是ajax调用,如果是则返回数据。如果没有,则重定向。使用此方法检测ajax:davidwalsh.name/detect-ajax

标签: javascript php jquery ajax laravel


【解决方案1】:

如果你试图只允许 ajax 调用,那么 laravel 会在 Request 类上提供一个 convenient method 来检查它是否是一个 ajax 调用。你也可以创建一个Middleware,这样你就可以方便的把它放到多个路由中。

// inside your controller function or middleware's handle function

if(!$request->ajax()) { // request assumed to be accessible from parameter
  return redirect('/');
}

【讨论】:

    【解决方案2】:

    添加一个 HTTP 参数到后端重定向到页面。然后在数据列表页面上,在加载内容之前,从后端检查是否传递了 HTTP 参数。如果未定义,则用户可能从 URL 访问,您可以将用户重定向到主站点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多