一日一技:ASP.NET Core 判断请求是否为Ajax请求
生活随笔
收集整理的這篇文章主要介紹了
一日一技: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;}} }總結
以上是生活随笔為你收集整理的一日一技:ASP.NET Core 判断请求是否为Ajax请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里25k招.NET,要求WPF!
- 下一篇: NET问答:Select 和 Selec