L'activation de la SCRO à travers le Web.config vs WebApiConfig et Contrôleur d'attributs
Il semble y avoir deux fonctionnellement différentes façons de permettre à la croix-origine de la demande de partage de l'API Web 2.
L'un est l'importation System.Web.Http.Cors
, décorer un contrôleur de avec le EnableCors
attribut et à écrire config.EnableCors()
dans le WebApiConfig:
[EnableCors(origins: "http://111.111.111.111", headers: "*", methods: "*")]
public class GenericController : ApiController
{
//etc.
L'autre est à modifier le site Web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://111.111.111.111" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
Est-il une différence fonctionnelle entre ces deux approches différentes? Ce qui est correct - ne pas faire la même chose? Si les deux méthodes sont utilisées pour activer la SCRO, les choses vont exploser?
Vous devez vous connecter pour publier un commentaire.
Si vous ajoutez les en-têtes pour le web.config, chaque demande qui est signifié par cette demande doit contenir spécifié en-têtes. Cette méthode est prise en charge sur le serveur web niveau et ne dépend pas de
config.EnableCors()
en cours d'exécution. Vous pouvez utiliser cette méthode pour ajouter de tout en-tête HTTP que vous souhaitez.Sur le revers de la médaille, le
EnableCors
attribut nécessite WebAPI et vous avez besoin d'ajouter un peu de code pour le faire fonctionner. Pour l'utilisateur final, le résultat est le même.Que pour ce qui est de mieux? J'ai bien aimé garder ces paramètres dans le code de l'application en utilisant l'attribut de sorte que ces paramètres sont évidents pour les futurs développeurs. Selon vos besoins, vous voudrez peut-être chercher dans un résumé
CorsApiController
qui votre principale ApiControllers pourrait hériter d'offrir le même de la SCRO en-têtes et plus. Mais cette méthode ne fonctionnera pas si la SCRO en-têtes de varier en fonction de contrôleur de contrôleur ou de l'action à l'action.System.Web.Http.Cors
espace de noms est juste autour pour plus de flexibilité dans les grands projets où plusieurs contrôleurs peuvent avoir besoin de différents croix-requête d'origine des règles de partage. Merci beaucoup!Microsoft.AspNet.WebApi.Cors
package pour eux de travailler? Ou est-ce une stratégie séparée complètement de l'installation de la nuget de la scro paquet?Access-Control-Allow-Origin
en-tête pour une liste acceptable orgins.