有时候,在特定的情况下,虽然项目的PC端和移动端是同数据库,功能相同,但是页面的设计可能不尽相同,这就需要我们判断当前用户使用的是PC端还是移动端,以便我们准确的渲染页面。或者我们想要停用某一端就需要判断访问源是PC还是移动端

实例:

主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是

Request.ServerVariables["HTTP_USER_AGENT"]。比如正常pc是: Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0常用手机的是:Nokia5320的是: Nokia 5320/UCWEB7.0.1.34/28/999HTC的安卓手机:Mozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1;iPhone的:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; zh-cn) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11

方法:通过正则表达式去匹配判断,代码如下:

ps:net core 获取http信息与framwork略有差异  https://blog.csdn.net/qq_39569480/article/details/105831712

using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Abp.Authorization;
using Abp.Authorization.Users;
using Abp.MultiTenancy;
using Abp.Runtime.Security;
using Abp.UI;
using Hepu.Authentication.External;
using Hepu.Authentication.JwtBearer;
using Hepu.Authorization;
using Hepu.Authorization.Users;
using Hepu.Models.TokenAuth;
using Hepu.MultiTenancy;
using Abp.Runtime.Caching;
using Microsoft.AspNetCore.Http;
using System.Text.RegularExpressions;namespace test.Controllers
{[Route("api/[controller]/[action]")]public class TokenAuthController : HepuControllerBase{ private readonly IHttpContextAccessor _httpContextAccessor;
//注入 IHttpContextAccessor 获取http相关信息public TokenAuthController( IHttpContextAccessor httpContextAccessor){ _httpContextAccessor = httpContextAccessor;}[HttpPost]public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model){var headers = _httpContextAccessor.HttpContext.Request.Headers; string str_u = headers["User-Agent"].FirstOrDefault();//Regex b = new Regex(@"android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);//Regex v = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", RegexOptions.IgnoreCase | RegexOptions.Multiline);//if (!(b.IsMatch(str_u) || v.IsMatch(str_u.Substring(0, 4))))if (str_u.Contains("Android")|| str_u.Contains("android")){//    访问来源 = "Android";Console.WriteLine(headers);}else{//   Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 访问来源 = "PC";Console.WriteLine(headers);}} }
}

.net core判断当前访问源是PC端还是移动端相关推荐

  1. python如何判断web访问来源是PC端还是手机端

    以下方法为判断web访问来源是PC端还是手机端 def judge_pc_or_mobile(ua):"""判断访问来源是pc端还是手机端:param ua: 访问来源头 ...

  2. php判断电脑浏览器模拟手机访问网页,在PC上测试移动端网站和模拟手机浏览器的5大方法...

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  3. 判断设备访问类型是PC端还是WAP端

    在开发项目中,可能经常会用到.判断用户访问的是PC还是手持设备,如果是手持设备自动访问wap地址. 方法一: JavaScript var browser={ versions:function(){ ...

  4. php判断移动端和pc端访问_PHP判断判访问设备是手机移动端还是PC电脑端

    这篇文章主要为大家详细介绍了PHP判断判访问设备是手机移动端还是PC电脑端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 随着网络进入移动互联网时代,我们的网站 ...

  5. js判断客户端是PC端还是移动端访问

    js判断客户端是PC端还是移动端访问 方法一 (推荐) function IsPC(){ var userAgentInfo = navigator.userAgent;var Agents = ne ...

  6. 判断访问来源是pc端还是手机端

    判断访问来源是pc端还是手机端(python) def judge_pc_or_mobile(ua):"""判断访问来源是pc端还是手机端:param ua: 访问来源头 ...

  7. JavaScript - 判断浏览器内的页面是在手机端还是电脑(PC)上打开的(判断用户访问设备是什么)

    前言 很多项目都是电脑 PC 端与移动端两套,通过判断客户端设备是手机还是电脑,从而重定向到对应页面. 如果您是 Vue.js 项目,请访问:Vue - 判断访问网页客户端设备是手机移动端还是 PC ...

  8. php判断移动端和pc端访问_PHP判断是手机端还是PC端 PHP判断是否是微信浏览器

    本文实例为大家分享了PHP判断的两个实例,一是PHP判断是手机端还是PC端,二是PHP判断是否是微信浏览器,供大家参考,具体内容如下 1.判断是否是手机端 function isMobile() { ...

  9. django项目内部的views层判断手机访问还是电脑访问

    在做网站时,一般都会通过打包html来制作两个界面,一个提供给电脑端,一个提供给手机端,避免因为兼容性差的问题,界面会变得很丑.当然,如果能保证纯bootstrap开发html界面,则不需要考虑这个问 ...

  10. 通过浏览器navigator判断浏览器版本或者手机类型判断微信访问

    javascript 的navigator属性,不常用,但是用处也不少,主要用处是在做浏览器兼容的问题的时候,现在有的网站已经不兼容IE6,用户假如用IE6浏览网页的话,会提示浏览器升级等信息.或者判 ...

最新文章

  1. 田志刚:智慧的员工,个人知识管理
  2. python搞笑代码-python有趣代码
  3. java double储存原理_Java内存分配原理
  4. 【面试招聘】双非渣硕的秋招路
  5. 经典C语言程序100例之八一
  6. ThinkPHP5跨控制器调用
  7. MySQL中的datetime与timestamp比较
  8. 浏览器专属 CSS Hack:区分 Firefox / Opera / Safari / Internet Explorer
  9. clickhouse 的mysql表引擎
  10. linux怎么新建系统用户名,在 Linux 中不使用 useradd 命令如何创建用户账号
  11. 苹果鸠占鹊巢打败微软 纳德拉欲以其人之道还治其身
  12. Contains的使用,一点经验
  13. ubuntu硬盘安装及启动,menu.lst
  14. 2014百度之星第一题Energy Conversion
  15. 4.2 制定项目章程
  16. 从计算机视觉到人脸识别:一文看懂颜色模型、信号与噪声
  17. java婚纱摄影网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  18. 联合阿里在职测开工程师耗时一个星期写的 【接口测试+自动化接口接口测试详解]
  19. RouterOS 通过NTH/PCC设置多线负载均衡及带宽叠加
  20. 流体力学发展史(转)

热门文章

  1. fatal io error 11错误
  2. qt写的一个计算器程序
  3. java线程池一创建就立马有线程了么_Java 线程池二之Executors创建的五种线程池及使用注意...
  4. HyperLogLog浅析
  5. python random 生成随机数
  6. 山西工商学院计算机科学与技术专业怎么样,山西工商学院计算机科学与技术专业2016年在山西理科高考录取最低分数线...
  7. vue 同步加载_如何在vue里实现同步阻塞请求,请求完成之前不加载页面或组件?...
  8. 支付宝 RSA和RSA2签名算法区别
  9. mysql 主从延迟及对应解决方案
  10. A N EAR -D UPLICATE D ETECTION A LGORITHM T O F ACILITATE D OCUMENT C LUSTERING——有时间看看里面的相关研究...