web-dev-qa-db-fra.com

Comment implémenter l'en-tête "Access-Control-Allow-Origin" dans asp.net

Est-il possible d'implémenter l'en-tête "Access-Control-Allow-Origin" dans asp.net

30
Nitin Sawant

De enable-cors.org :

CORS sur ASP.NET

Si vous n'avez pas accès à la configuration d'IIS, vous pouvez toujours ajouter l'en-tête via ASP.NET en ajoutant la ligne suivante à vos pages source:

Response.AppendHeader("Access-Control-Allow-Origin", "*");

Voir aussi: Configuration IIS6 / IIS7

59
dtb

Une autre option consiste à l'ajouter directement à web.config:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="http://www.yourSite.com" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
      </customHeaders>
    </httpProtocol>

....__ J'ai trouvé cela dans ici

13
DanielV

1.Install-Package Microsoft.AspNet.WebApi.Cors

2 Ajoutez ce code dans WebApiConfig.cs.

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services

    // Web API routes

    config.EnableCors();

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

3. Ajouter ceci 

using System.Web.Http.Cors; 

4. Ajoutez ce code dans Api Controller ( HomeController.cs )

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class HomeController : ApiController
{
    [HttpGet]
    [Route("api/Home/test")]
    public string test()
    {
       return "";
    }
}
5

Vous auriez besoin d’un module HTTP qui examine la ressource demandée et s’il s’agissait d’un fichier css ou js, l’en-tête Access-Control-Allow-Origin contenant l’URL du demandeur, à moins que vous ne souhaitiez l’ouvrir en grand avec «*».

1
Westley

La configuration des en-têtes de réponse CORS sur le serveur n'était pas vraiment une option. Vous devez configurer un proxy côté client.

Sample to Angular - J'ai donc créé un fichier proxy.conf.json pour agir en tant que serveur proxy. Ci-dessous mon fichier proxy.conf.json:

{
  "/api": {
    "target": "http://localhost:49389",
    "secure": true,
    "pathRewrite": {
      "^/api": "/api"
    },
    "changeOrigin": true
  }
}

Mettez le fichier dans le même répertoire que package.json puis j'ai modifié la commande de démarrage dans le fichier package.json comme ci-dessous

"start": "ng serve --proxy-config proxy.conf.json"

À présent, l'appel http du composant de l'application est le suivant:

return this.http.get('/api/customers').map((res: Response) => res.json());

Enfin, utilisez npm start ou ng serve --proxy-config proxy.conf.json

0
Elialber Lopes