MVC 5 restreint toutes les requêtes HTTP au POST
Un collègue a soulevé une question aujourd'hui. Il souhaitait restreindre toutes les requêtes HTTP reçues par MVC au POST.
Ensuite, dans le contenu suivant, je partagerai avec vous la méthode à laquelle j'ai pensé. Si vous avez d'autres méthodes, veuillez laisser un message.
1. Fonctionnalité HttpPostAttribute
La première chose qui me vient à l'esprit est que MVC fournit la fonctionnalité HttpPostAttribute, qui est utilisée pour restreindre la soumission des requêtes HTTP en mode POST.
1 public class HomeController : Controller2 { 3 [HttpPost]4 public ActionResult Index()5 {6 return View();7 }8 }
Cette fonctionnalité ne peut être marquée que sur la méthode Action. Nous devons marquer chaque méthode Action et créer un codeur. Nous ne pouvons certainement pas accepter cette méthode.


1 //2 // 摘要:3 // 表示一个特性,该特性用于限制操作方法,以便该方法仅处理 HTTP POST 请求。4 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]5 public sealed class HttpPostAttribute : ActionMethodSelectorAttribute6 {7 8 }
2. Utilisation de HttpModule
Dans Asp.Net pipeline , vous pouvez enregistrer votre propre gestionnaire d'événements pour les événements dans l'objet HttpApplication via HttpModule afin de contrôler toutes les requêtes HTTP.
1 public class HttpMethodModule : IHttpModule 2 { 3 public void Init(HttpApplication context) 4 { 5 context.PostMapRequestHandler += Context_PostMapRequestHandler; 6 } 7 8 private void Context_PostMapRequestHandler(object sender, EventArgs e) 9 {10 HttpApplication httpApplication = (HttpApplication) sender;11 HttpContext httpContext = httpApplication.Context;12 13 14 //判断当前是否使用的是 MVC 框架来处理请求,其它的请示不做控制。15 MvcHandler mvcHandler = httpContext.Handler as MvcHandler;16 17 if (mvcHandler != null && httpContext.IsPostMethod() == false) {18 throw new HttpException(404, "访问的资源不存在。");19 }20 }21 22 public void Dispose()23 {24 25 }26 }
Ajoutez les configurations pertinentes dans Web.config.
1 <?xml version="1.0" encoding="utf-8"?>2 <configuration>3 <system.webServer>4 <modules>5 <add name="HttpMethod" type="HttpPostWebApp.Web.HttpMethodModule, HttpPostWebApp"/>6 </modules>7 </system.webServer>8 </configuration>
Après test, il peut répondre à nos exigences (les résultats des tests ne seront pas démontrés).
3. Filtre MVC
Dans MVC, les requêtes peuvent être contrôlées via des filtres globaux.
1 public class HttpPostFilter : IAuthorizationFilter 2 { 3 public void OnAuthorization(AuthorizationContext filterContext) 4 { 5 if (filterContext.HttpContext.IsPostMethod() == false) { 6 7 //如果不是POST请求,则返回404。 8 filterContext.Result = new HttpNotFoundResult(); 9 }10 }11 }
Lorsque le programme démarre, inscrivez-vous en tant que filtre global.
1 public class FilterConfig2 {3 public static void RegisterGlobalFilters(GlobalFilterCollection filters)4 {5 filters.Add(new HttpPostFilter());6 }7 }
4. Contraintes de routage
Lors de l'enregistrement d'un itinéraire, vous pouvez définir des contraintes de routage. De la manière suivante, la méthode de requête peut être limitée aux requêtes POST.
1 public class RouteConfig 2 { 3 public static void RegisterRoutes(RouteCollection routes) 4 { 5 routes.MapRoute( 6 name: "Default", 7 url: "{controller}/{action}/{id}", 8 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 9 //限制请求方式必须是POST10 , constraints:new { httpMethod = new HttpMethodConstraint("POST")}11 );12 }13 }
5. Remplacement des méthodes du contrôleur
Dans MVC, tous les contrôleurs héritent de Controller par défaut.
Nous pouvons définir une classe abstraite de BaseController, remplacer OnActionExecuting et d'autres contrôleurs héritent de BaseController.
1 public abstract class BaseController : Controller 2 { 3 protected override void OnActionExecuting(ActionExecutingContext filterContext) 4 { 5 6 if (filterContext.HttpContext.IsPostMethod() == false) { 7 //如果不是POST请求,则返回404。 8 filterContext.Result = new HttpNotFoundResult(); 9 }10 else {11 base.OnActionExecuting(filterContext);12 }13 }14 }
Cette méthode nécessite de modifier les classes de base de tous les contrôleurs et n'est pas recommandée.
Bien sûr, si vous avez défini votre propre classe de base de contrôleur, la charge de travail de cette méthode est également très faible.
Résumé
Parmi les cinq méthodes ci-dessus, les méthodes deux, trois et quatre sont très simples, mais je recommande la méthode quatre car si les exigences changent, la charge de travail de maintenance est minime.
Si vous avez d'autres méthodes, merci de laisser un message, merci !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Avec la popularité des comptes vidéo sur les réseaux sociaux, de plus en plus de personnes commencent à utiliser des comptes vidéo pour partager leur vie quotidienne, leurs idées et leurs histoires. Cependant, certains utilisateurs peuvent constater que les commentaires sont restreints, ce qui peut les laisser confus et insatisfaits. 1. Comment supprimer les restrictions de commentaires sur les comptes vidéo ? Pour lever la restriction relative aux commentaires sur un compte vidéo, vous devez d'abord vous assurer que le compte a été correctement enregistré et que l'authentification par votre nom réel a été effectuée. Les comptes vidéo ont des exigences en matière de commentaires. Seuls les comptes ayant effectué une authentification par nom réel peuvent lever les restrictions de commentaires. S'il y a des anomalies dans le compte, ces problèmes doivent être résolus avant que les restrictions de commentaires puissent être levées. 2. Respectez les normes communautaires du compte vidéo. Les comptes vidéo ont certaines normes concernant le contenu des commentaires. Si le commentaire implique un contenu illégal, il vous sera interdit de parler. Pour lever les restrictions de commentaires, vous devez respecter la communauté du compte vidéo

Comprendre la signification du code d'état HTTP 301 : scénarios d'application courants de redirection de pages Web Avec le développement rapide d'Internet, les exigences des utilisateurs en matière d'interaction avec les pages Web sont de plus en plus élevées. Dans le domaine de la conception Web, la redirection de pages Web est une technologie courante et importante, mise en œuvre via le code d'état HTTP 301. Cet article explorera la signification du code d'état HTTP 301 et les scénarios d'application courants dans la redirection de pages Web. Le code d'état HTTP 301 fait référence à une redirection permanente (PermanentRedirect). Lorsque le serveur reçoit le message du client

Solution : 1. Vérifiez le type de contenu dans l'en-tête de la requête ; 2. Vérifiez le format des données dans le corps de la requête ; 3. Utilisez le format de codage approprié. 4. Utilisez la méthode de requête appropriée ;

Comment implémenter le streaming HTTP en C++ ? Créez un socket de flux SSL à l'aide de Boost.Asio et de la bibliothèque client asiohttps. Connectez-vous au serveur et envoyez une requête HTTP. Recevez les en-têtes de réponse HTTP et imprimez-les. Reçoit le corps de la réponse HTTP et l'imprime.

Code d'état HTTP 200 : explorez la signification et l'utilisation des réponses réussies Les codes d'état HTTP sont des codes numériques utilisés pour indiquer l'état de la réponse d'un serveur. Parmi eux, le code d'état 200 indique que la demande a été traitée avec succès par le serveur. Cet article explorera la signification spécifique et l'utilisation du code d'état HTTP 200. Tout d’abord, comprenons la classification des codes d’état HTTP. Les codes d'état sont divisés en cinq catégories, à savoir 1xx, 2xx, 3xx, 4xx et 5xx. Parmi eux, 2xx indique une réponse réussie. Et 200 est le code d'état le plus courant dans 2xx

WPS est un logiciel bureautique qui intègre des opérations complètes. Vous pouvez désormais télécharger WPS pour l'utiliser, mais si vous souhaitez disposer de plus de fonctions, vous devez vous inscrire en tant que membre. Certaines personnes peuvent se demander quelle est la taille maximale de fichier qu’un membre WPS peut télécharger ? Si vous êtes un utilisateur membre WPS, vous pouvez télécharger des fichiers jusqu'à 1 Go à chaque fois, et tous les fichiers peuvent totaliser jusqu'à 365 Go. Il peut y avoir quelques différences selon les terminaux, mais l'affichage global est fondamentalement similaire. Que dois-je faire si je ne peux pas télécharger au-delà de la limite ? Nous l'expliquerons ensuite. 1. Lors du téléchargement de fichiers, tels que des documents cloud, il y a une certaine quantité d'espace. S'il dépasse l'espace, il ne peut pas être téléchargé. 2. Cliquez sur le logo de l'adhésion, achetez une adhésion en fonction de vos besoins et agrandissez l'espace. 3. Des coupons peuvent apparaître occasionnellement, alors n'oubliez pas de les utiliser.

Nginx est un serveur Web léger et performant. Il prend non seulement en charge des fonctions avancées telles que le proxy inverse et l'équilibrage de charge, mais dispose également de puissantes capacités de réécriture de requêtes. Dans les applications Web réelles, il est souvent nécessaire de réécrire l'URL de la requête pour obtenir une meilleure expérience utilisateur et des effets d'optimisation des moteurs de recherche. Cet article présentera comment Nginx implémente la configuration de la réécriture des requêtes en fonction de l'URL de la requête, y compris des exemples de code spécifiques. Syntaxe de réécriture Dans Nginx, vous pouvez utiliser la directive rewrite pour effectuer une réécriture de requête. sa langue de base

Solution : 1. Réessayez : vous pouvez attendre un certain temps et réessayer, ou actualiser la page ; 2. Vérifiez la charge du serveur : vérifiez l'utilisation du processeur, de la mémoire et du disque du serveur. Si la limite de capacité est dépassée, vous pouvez essayer. pour optimiser la configuration du serveur ou augmenter la capacité. 3. Vérifiez la maintenance et les mises à niveau du serveur : vous ne pouvez attendre que le serveur revienne à la normale. 4. Vérifiez la connexion réseau : assurez-vous que la connexion réseau est stable, vérifiez si le réseau est actif. les paramètres du périphérique, du pare-feu ou du proxy sont corrects ; 5. Assurez-vous que la configuration du cache ou du CDN est correcte ; 6. Contactez l'administrateur du serveur, etc.
