【发布时间】:2014-03-23 23:26:06
【问题描述】:
正如标题所说,是否可以检测特定页面是否正在通过 Web 浏览器而不是 HTTP 请求进行访问?我知道通过网络浏览器访问是在执行 HTTP 请求,所以我很好奇它是否有可能区分。
我问是因为我希望某个页面只能通过我自己的应用程序访问,并且不应该直接浏览。
【问题讨论】:
-
然后添加从您的应用程序发送的标头和/或使用身份验证?
标签: javascript php http
正如标题所说,是否可以检测特定页面是否正在通过 Web 浏览器而不是 HTTP 请求进行访问?我知道通过网络浏览器访问是在执行 HTTP 请求,所以我很好奇它是否有可能区分。
我问是因为我希望某个页面只能通过我自己的应用程序访问,并且不应该直接浏览。
【问题讨论】:
标签: javascript php http
如果它是可公开访问的 URL,则无法从根本上区分“您的应用”和“其他任何人”。它只是一个 HTTP 请求,无论您以何种方式访问它。如果您设置了正确的标头,则无法区分一个请求与另一个相同的请求。如果您只想限制对“您的应用程序”的访问,请设置一些只有“您的应用程序”知道的特定秘密身份验证标头。但是,如果“您的应用”是网页中的 Javascript,那么任何人都可以检查并看到那些“秘密”标头。
【讨论】:
尝试使用get_browser 并检查isMobileDevice 字段。
如果请求来自网络浏览器,您可以使用 if 条件检查它并限制该页面的访问。
当然,只有在 php.ini 中设置了 browscap.ini 的路径时,它才会有所帮助。如果没有,你可以使用像https://github.com/garetjax/phpbrowscap这样的php类
【讨论】: