一日一技:ASP.NET Core 判断请求是否为Ajax请求

概述

在写后台程序时,有时候需要知道客户端发送的是普通的请求,还是ajax 请求,最近在做项目的时候,有些地方需要判断当前的请求是不是ajax。特地找了下发现,jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest。Ajax请求的request headers里都会有一个key为x-requested-with,值为XMLHttpRequest的header,所以我们就可以使用这个特性进行判断。

判断是不是ajax

using System;namespace CompanyName.ProjectName.Web.Host.Framework
{public static class RequestExt{/// <summary>/// Determines whether the specified HTTP request is an AJAX request./// </summary>////// <returns>/// true if the specified HTTP request is an AJAX request; otherwise, false./// </returns>/// <param name="request">The HTTP request.</param>///  <exception cref="T:System.ArgumentNullException">///  The <paramref name="request"/>///  parameter is null (Nothing in Visual Basic).</exception>public static bool IsAjaxRequest(this Microsoft.AspNetCore.Http.HttpRequest request){if (request == null)throw new ArgumentNullException("request");if (request.Headers != null)return request.Headers["X-Requested-With"] == "XMLHttpRequest";return false;}}
}

控制ajax才能使用方法

using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.ActionConstraints;
using Microsoft.AspNetCore.Routing;namespace CompanyName.ProjectName.Web.Host.Framework
{public class AjaxOnlyAttribute : ActionMethodSelectorAttribute{public bool Ignore { get; set; }public AjaxOnlyAttribute(bool ignore = false){Ignore = ignore;}public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action){if (Ignore)return true;var request = routeContext.HttpContext.Request;if (request != null && request.Headers != null && request.Headers["X-Requested-With"] == "XMLHttpRequest")return true;return false;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HttpHandler浅析

声明:本文为翻译文章,如有侵权,请告知,我将会在1个工作日内删除,谢谢. ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 总是想着展翅飞翔,但是却不料一直受伤,但是那寻梦的心啊,永远向往着远方. ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★…

神经网络简史:BP算法后的又一突破—信念网络

随着训练多层神经网络的谜题被揭开&#xff0c;这个话题再一次变得空前热门&#xff0c;罗森布拉特的崇高雄心似乎也将得以实现。直到1989年另一个关键发现被公布&#xff0c;现在仍广为教科书及各大讲座引用。多层前馈神经网络是普适模拟器&#xff08; universal approximato…

Linux网络模块全局变量,()不是Linux系统的特色.

相关题目与解析UNIX是一个交互式的______操作系统&#xff0c;采用以全局变量为中心的模块结构。下列关于UNIX系统结构的描述中&#xff0c;正确的是______。A&#xff0e;UNIX系统是一个交互式的多用户、多任务分时操作按照变量的作用域可将变量划分为()A.公有、私有、系统B.全…

NET问答:Select 和 SelectMany 的区别

咨询区 Tarik&#xff1a;我已经 google 搜索了 Select 和 SelectMany 之间的区别&#xff0c;但我并没有找到合适的答案&#xff0c;我现在急切的需要知道在 Linq to SQL 时两者的区别而不是给我用Array展示...能否有人帮忙提供 Linq To SQL 的例子吗&#xff1f;回答区 Mike …

最好的FLV视频下载器 维棠 (支持优酷视频下载、土豆视频下载等)

维棠FLV视频下载能帮助你轻松下载国内外大多数FLV视频分享网站的视频内容;并且维棠FLV视频下载具有断点续传功能。 现在国内外出现了很多视频分享网站&#xff0c;每个用户都可以把自己的视频节目和其他人分享。这些网站有大量的在线视频资源&#xff0c;但是由于网络带宽的限…

linux ns3配置环境,Ubuntu下的NS3安装与入门

NS3的开发旨在为网络研究和教育提供开放&#xff0c;可扩展的网络仿真平台。简而言之&#xff0c;NS3提供了分组数据网络如何工作和执行的模型&#xff0c;并为用户提供了进行模拟实验的模拟引擎。使用ns-3的一些原因包括进行更难或不可能用真实系统执行的研究&#xff0c;在高…

龙芯3A5000完成流片 同主频性能追平AMD Zen1

前不久&#xff0c;龙芯3A5000完成流片&#xff0c;该CPU基于龙芯自主定义指令集LoongArch。据小道消息&#xff0c;SPEC06测试定点26分&#xff08;base 2.5Ghz&#xff09;。这个成绩已经达到预期指标&#xff0c;而且经过进一步优化&#xff0c;SPEC06成绩还有进一步优化的…

Funambol DM 安装过程

Funambol DM 安装过程 Funambol安装过程包括了 Java环境安装 ,Mysql安装 ,Jboss安装和 Funambol DM的安装 .一 : Java环境安装 1: Java现在使用的版本是 :jdk-1_5_0-windows-i586.exe . 2: 安装完毕 ,请在 windows系统下设置环境变量 JAVA_HOME{jdk的安装目录 } 如 : J…

熬夜族又一噩耗:“早死”风险更高!

根据美国西北大学范伯格医学院和英国萨里大学最近的一项研究&#xff0c;相比于早睡早起的人&#xff08;百灵鸟一般&#xff09;&#xff0c;晚上不睡、早晨不起&#xff0c;或起床困难的“夜猫子”们&#xff0c;“早死”的风险更高。这项基于英国生物库中将近50万人样本的研…

Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼没有截图&#xff0c;直接上代码吧。原代码是这样的&#xff1a;#include#include#include#include#includeint main(){int fd-1;ssize_t size-1;off_t offset-1;char buf1[]"0124553";char buf2[]"dsfafads";…

iNeuOS工业互联平台,生产过程业务联动控制

1. 概述工业物联网也好、工业互联网也好或是其他生产系统&#xff0c;反向控制始终无法回避。搞工业最直接、最体现效果的两个方面是采集各种数据和生产过程业务控制&#xff0c;所谓大数据预测和分析&#xff0c;那是仁者见仁、智者见智&#xff0c;下一篇文章我们会专业来讨…

t-sql里Linked server跨数据库查询

set ANSI_NULLS ON set QUOTED_IDENTIFIER ONgoALTER procedure [dbo].[updateData] as/*--必须先创建一个LinkedServerEXEC sp_addlinkedserverserverlyg,--被访问的服务器别名 srvproduct,providerSQLOLEDB,datasrclyg --要访问的服务器*/--登录上一步建好的服务器&#x…

linux防火墙开放所有端口命令,linux centos7 防火墙及端口开放相关命令

一、防火墙相关命令1、查看防火墙状态 &#xff1a; systemctl status firewalld.service注&#xff1a;active是绿的running表示防火墙开启2、关闭防火墙 &#xff1a;systemctl stop firewalld.service3、开机禁用防火墙自启命令 &#xff1a;systemctl disable firewalld.se…

如何使用 BenchmarkDotNet 对 C# 代码进行基准测试

BenchmarkDotNet 是一个轻量级&#xff0c;开源的&#xff0c;强大的 .NET 工具包&#xff0c;它可以将你的方法转化为基准并跟踪这些方法&#xff0c;最后对这些方法的性能提供一些测试报告&#xff0c;使用 BenchmarkDotNet 玩 基准测试 是非常容易的。你可以利用 BenchmarkD…

MSSQL 2008 企业管理器打开命令

MSSQL 2008 Server做了一些调整&#xff0c;取数据是按照200或者1000条查看&#xff0c;对权限控制的更加严格&#xff0c;已经去掉可以添加用户的那个存储过程。同时在启动实例时也加强权限的限制&#xff0c;如果没有权限那么将无法打开。 在MSSQL 2008 Server中如果想通过命…

笑说设计模式-小白逃课被点名

简介 工厂模式&#xff08;Factory Pattern&#xff09;是最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;而是通过使用一个共同的接口来…

原来论文排版还有这样的学问

论文的重要加分点除了内容&#xff0c;还有它小天最近经常遇到小伙伴的诉苦&#xff1a;“我的毕业论文提交一次就被导师批评一次&#xff0c;内容不行就算了&#xff0c;格式也有问题&#xff01;改论文改到绝望”“期刊的版式要求不是统一的&#xff0c;为了多投几家&#xf…

红帽linux5安装Oracle 9i enterprise

红帽linux5安装Oracle 9i enterprise 本文转自&#xff1a;http://database.51cto.com/art/201004/194082.htm摘要&#xff1a;如果你在红帽Linux5上安装Oracle 9i enterprise遇到了问题&#xff0c;不防看一看下面的文章&#xff0c;希望能帮你解决有关Oracle9i实际应用的问题…

powerpc-linux-gcc,关于powerpc-linux-uclibc-gcc的使用

做了点东西需要使用linux下ldap库&#xff0c;我装的linux上已经有ldap库&#xff0c;在程序中#include 了。用gcc编译时&#xff1a;gcc filename.c,会报找不到ldap.h文件以及ldap.h文件中相关函数的错误但是使用gcc filename.c -lldap&#xff0c;就能够编译通过了。后来要求…

神经网络告诉我,谁是世界上最「美」的人?

「魔镜魔镜告诉我&#xff0c;谁是世界上最美的女人&#xff1f;」这句伴随童年的话也有现实版哦&#xff5e;神经网络可以预测人脸颜值&#xff0c;这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文&#xff0c;并公开了数据集 SCUT-FBP5500。本文作者 Dima Shu…