【问题标题】:Laravel check if request came from browser or rest client (mobile app)Laravel 检查请求是来自浏览器还是其他客户端(移动应用程序)
【发布时间】:2016-04-07 18:29:33
【问题描述】:

我正在使用Laravel 5.1

在我的项目中,MVVM 模式中有一个 service-based architecture。因此,服务器返回的所有数据都是使用 api 调用。

客户端浏览器和移动应用程序(即我们在AndroidiOS 中为CRUD 操作创建的)使用相同的服务。

我现在想检测请求是来自任何浏览器(也包括移动浏览器)还是来自任何移动设备(即使用移动应用程序,而不是移动浏览器)。有什么方法可以区分吗?

在请求中设置自定义标头(即来自移动应用程序)可能是一种解决方案,但如果使用 laravel 代码有任何解决方案,我不想遵循它。

【问题讨论】:

  • 使用 HTTP 用户代理。 google一下就知道了
  • @vikrammistry,这是我用来识别的安卓应用的用户代理:Dalvik/1.6.0 (Linux; U; Android 4.4.2; Micromax A106 Build/KOT49H) ,你无法区分如果是浏览器或应用程序。

标签: laravel


【解决方案1】:

目前在 Laravel 4、5 和 5.2 中没有检测设备类型的功能, 但是,您可以简单地检查设备是否具有此功能。

if( preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"])){
   //hey I'm a mobile device
}

要检测其他设备功能,例如屏幕分辨率、屏幕尺寸、操作系统等,您可以尝试以下 Laravel 包:

https://github.com/CodyPChristian/browscap-laravel

https://github.com/hisorange/browser-detect

【讨论】:

  • 它不仅可以检测移动浏览器,还可以检测浏览器(任何操作系统,如 windows、mac、linux..)。我只是想区分请求是由浏览器还是由应用程序命中的?
  • 在这种情况下,包识别请求来自移动设备,但无法区分它是从移动浏览器或应用程序发送的。例如,我收到来自应用程序的用户代理请求:Dalvik/1.6.0 (Linux; U; Android 4.4.2; Micromax A106 Build/KOT49H) 但该包无法识别它是设备浏览器的调用还是是来自应用程序吗?
【解决方案2】:

它对我有用。 ` 公共函数 somethingfunc(请求 $request) { $request->header('用户代理') ....

`

【讨论】:

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