Ist es möglich, den Header "Access-Control-Allow-Origin" in asp.net zu implementieren
Von enable-cors.org :
CORS unter ASP.NET
Wenn Sie keinen Zugriff auf die Konfiguration von IIS haben, können Sie den Header trotzdem über ASP.NET hinzufügen, indem Sie den Quellenseiten die folgende Zeile hinzufügen:
Response.AppendHeader("Access-Control-Allow-Origin", "*");
Eine andere Möglichkeit ist, es direkt in der web.config hinzuzufügen:
<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>
....__ Ich fand das in hier
1.Installationspaket Microsoft.AspNet.WebApi.Cors
2 Fügen Sie diesen Code in WebApiConfig.cs hinzu.
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. Fügen Sie dies hinzu
using System.Web.Http.Cors;
4. Fügen Sie diesen Code im API-Controller hinzu ( HomeController.cs ).
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class HomeController : ApiController
{
[HttpGet]
[Route("api/Home/test")]
public string test()
{
return "";
}
}
Sie benötigen ein HTTP-Modul, das sich die angeforderte Ressource angesehen hat. Wenn es sich um ein css oder js handelt, muss es den Header Access-Control-Allow-Origin mit der Anforderer-URL verwenden, es sei denn, Sie möchten, dass es mit '*' weit geöffnet wird.
Das Konfigurieren der CORS-Antwortheader auf dem Server war nicht wirklich eine Option. Sie sollten einen Proxy-Client konfigurieren.
Beispiel für Angular - Also habe ich eine proxy.conf.json-Datei erstellt, die als Proxy-Server dient. Unten ist meine proxy.conf.json-Datei:
{
"/api": {
"target": "http://localhost:49389",
"secure": true,
"pathRewrite": {
"^/api": "/api"
},
"changeOrigin": true
}
}
Legen Sie die Datei in demselben Verzeichnis ab wie die package.json. Dann habe ich den Startbefehl in der package.json-Datei wie folgt geändert
"start": "ng serve --proxy-config proxy.conf.json"
der http-Aufruf von der App-Komponente lautet nun wie folgt:
return this.http.get('/api/customers').map((res: Response) => res.json());
Zum Ausführen von npm start oder ng dienen --proxy-config proxy.conf.json