为什么 iPhone 将 Google Chrome 视为 Safari,也将 Mozilla Firefox 视为 Safari 浏览器?

2024-01-07

我创建了一个代码来检查浏览器是否只能在 Google Chrome 上访问并限制 Mozilla Firefox。例如,我使用 Android 手机,我希望仅使用 Google Chrome 授予访问权限,并且如果 iPhone 或 iPad Google Chrome 有权访问该网站。但当检查浏览器是 Chrome 还是 Mozilla 时,它被视为 Safari。使用C#工具。因此,我会调查是否有一个独特的属性很好用,但遗憾的是没有。是否有一个好的插件或库或框架来检测 iphone 或 android 浏览器。谢谢。

这是针对谷歌浏览器的。

var userAgent = filterContext.HttpContext.Request.UserAgent?.ToLowerInvariant() ?? "";
"mozilla/5.0 (iphone; cpu iphone os 9_1 like mac os x) applewebkit/601.1.46 (khtml, like gecko) version/9.0 mobile/13b143 safari/601.1"

var userBrowser = filterContext.HttpContext.Request.Browser.Browser?.ToLowerInvariant() ?? "";
"safari"

var userBrowserTypeype = filterContext.HttpContext.Request.Browser.Type;
"Safari9"

var userBrowserVersion = filterContext.HttpContext.Request.Browser.Version;
"9.0"

var userBrowserMajorVersion = filterContext.HttpContext.Request.Browser.MajorVersion;
"9"

var userBrowserMinorVersion = filterContext.HttpContext.Request.Browser.MinorVersion;
0

var userBrowserPlatform = filterContext.HttpContext.Request.Browser.Platform;
"Unknown"

var userBrowserBeta = filterContext.HttpContext.Request.Browser.Beta;
false

var userBrowserCrawler = filterContext.HttpContext.Request.Browser.Crawler;
false

var userAol = filterContext.HttpContext.Request.Browser.AOL;
false

var userBrowserWin16 = filterContext.HttpContext.Request.Browser.Win16;
false

var userBrowserWin32 = filterContext.HttpContext.Request.Browser.Win32;
false

var userBrowserFrames = filterContext.HttpContext.Request.Browser.Frames;
true

var usBrowserTables = filterContext.HttpContext.Request.Browser.Tables;
true 

var userBrowserCookies = filterContext.HttpContext.Request.Browser.Cookies;
true

var userBrowserVbScript = filterContext.HttpContext.Request.Browser.VBScript;
false

这是针对 Mozilla Firefox 的。

var userAgent = filterContext.HttpContext.Request.UserAgent?.ToLowerInvariant() ?? "";
"mozilla/5.0 (iphone; cpu iphone os 10_2_1 like mac os x) applewebkit/602.4.6 (khtml, like gecko) version/10.0 mobile/14d27 safari/602.1"

var userBrowser = filterContext.HttpContext.Request.Browser.Browser?.ToLowerInvariant() ?? "";
"safari"

var userBrowserTypeype = filterContext.HttpContext.Request.Browser.Type;
"Safari10"

var userBrowserVersion = filterContext.HttpContext.Request.Browser.Version;
"10.0"

var userBrowserMajorVersion = filterContext.HttpContext.Request.Browser.MajorVersion;
"10"

var userBrowserMinorVersion = filterContext.HttpContext.Request.Browser.MinorVersion;
0

var userBrowserPlatform = filterContext.HttpContext.Request.Browser.Platform;
"Unknown"

var userBrowserBeta = filterContext.HttpContext.Request.Browser.Beta;
false

var userBrowserCrawler = filterContext.HttpContext.Request.Browser.Crawler;
false

var userAol = filterContext.HttpContext.Request.Browser.AOL;
false

var userBrowserWin16 = filterContext.HttpContext.Request.Browser.Win16;
false

var userBrowserWin32 = filterContext.HttpContext.Request.Browser.Win32;
false

var userBrowserFrames = filterContext.HttpContext.Request.Browser.Frames;
true

var usBrowserTables = filterContext.HttpContext.Request.Browser.Tables;
true 

var userBrowserCookies = filterContext.HttpContext.Request.Browser.Cookies;
true

var userBrowserVbScript = filterContext.HttpContext.Request.Browser.VBScript;
false

这可能是因为 iOS 不允许 Safari 以外的其他浏览器引擎。

遗憾的是,这迫使 Chrome 应用程序使用 Safari 的网络浏览器组件和用户代理。

阅读更多关于它在这里 https://www.howtogeek.com/184283/why-third-party-browsers-will-always-be-inferior-to-safari-on-iphone-and-ipad/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 iPhone 将 Google Chrome 视为 Safari,也将 Mozilla Firefox 视为 Safari 浏览器? 的相关文章

  • EventHandler 应该始终用于事件吗?

    我一直在愉快地使用自定义委托类型和通用编写事件Action委托类型 没有真正考虑我在做什么 我有一些很好的扩展助手Action and EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型 但除此之外 除了惯例
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • 为什么在 C++ 中声明枚举时使用 typedef?

    我已经很多年没有写过任何 C 了 现在我正试图重新开始 然后我遇到了这个并考虑放弃 typedef enum TokenType blah1 0x00000000 blah2 0X01000000 blah3 0X02000000 Toke
  • 如何调整 Windows 窗体以适应任何屏幕分辨率?

    我知道这是重复的问题 但我检查了所有其他相关问题 他们的答案没有帮助 结果仍然与屏幕截图 2 中所示相同 我是 C Windows 窗体新手 如截图1所示 我有Form1有一些控件 每组控件都放在一个面板中 我在 PC1 中设计了应用程序
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • C# Winforms Designer 无法打开,因为它无法在同一程序集中找到类型

    我收到以下错误 找不到类型 My Special UserControl 请确保引用包含此类型的程序集 如果此类型是您的开发项目的一部分 请确保已使用当前平台或任何 CPU 的设置成功构建该项目 但没有任何意义的是My Special Us
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • 编写具有多种类型的泛型扩展方法时的类型推断问题

    我正在为 IEnumerable 编写一个通用扩展方法 用于将对象列表映射到另一个映射对象列表 这就是我希望该方法的工作方式 IList
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 如何调用与现有方法同名的扩展方法? [复制]

    这个问题在这里已经有答案了 我有这样的代码 public class TestA public string ColA get set public string ColB get set public string ColC get se
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另

随机推荐