Die Graph-API arbeitet mit der Web-API zusammen, löst jedoch den Fehler aus. Der Header „Access-Control-Allow-Origin“ isC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Die Graph-API arbeitet mit der Web-API zusammen, löst jedoch den Fehler aus. Der Header „Access-Control-Allow-Origin“ is

Post by Anonymous »

Es ist mir gelungen, die Microsoft Graph-API einzurichten und in einer Web-API-App zum Laufen zu bringen, in der eine Post-Anfrage erfolgreich war, um das Bearer-Token abzurufen und erneut die E-Mail zu senden.
Allerdings Wenn ich denselben Code in Blazor verwende, erhalte ich einen CORS-Fehler, wenn ich versuche, die Post-Anfrage zur Authentifizierung durchzuführen, und der Fehler ist der Standardfehler, den Sie erhalten, wenn kein Cors vorhanden ist (ich habe den Mieter unten durch TENANT ersetzt):< /p>

Der Zugriff auf den Abruf unter „https://login.microsoftonline.com/TENAN ... v2.0/token“ vom Ursprung „https://localhost:7253“ wurde durch die CORS-Richtlinie blockiert: Nein „ Der Header „Access-Control-Allow-Origin“ ist auf der angeforderten Ressource vorhanden. Wenn eine undurchsichtige Antwort Ihren Anforderungen entspricht, setzen Sie den Modus der Anfrage auf „no-cors“, um die Ressource mit deaktiviertem CORS abzurufen.

Ich kann es nicht verstehen Was könnte an einem Blazor-Projekt anders sein, das dies verhindern würde, wenn es in der Web-API einwandfrei funktioniert und beide auf dieselbe Microsoft-URL zugreifen und nur eine aufgrund von CORS auf der angeforderten Ressource blockiert wird, abgesehen von der Tatsache, dass die Web-API von ausgeführt wird? Server und Blazor wird über den Browser ausgeführt es sei denn, das ist der Fall.
Dies ist der Teil des Codes, der die API aufruft:
string? loginEndPoint;
loginEndPoint = $"https://login.microsoftonline.com/{tena ... v2.0/token";

HttpResponseMessage formResponse = await httpClient.PostAsync(loginEndPoint, formParamsEncoded);

Ich habe im Wesentlichen dieselbe Konfigurationsdatei und dieselbe gemeinsam genutzte Klasse kopiert, die die E-Mail von der funktionierenden Web-API sendet, sodass die Klasse, die die E-Mail sendet, identisch ist.
Wenn es nicht möglich ist, dies von Blazor aus zum Laufen zu bringen, bedeutet das, dass ich meine eigene Web-API erstellen muss, zu der ich CORS hinzufügen und diese zuerst aufrufen kann, um dann die Microsoft-API von meiner API aus aufzurufen, was der Fall wäre eine zusätzliche Ebene der Komplexität, die eigentlich nicht sein sollte benötigt.
Ich habe mich gefragt, ob ich NoCors-Header von der aufrufenden Blazor-Seite hinzufügen könnte, indem ich stattdessen SendAsync verwende, aber das ergab einen Server-400-Fehler und nicht den Cors< /code>-Fehler, ich bin mir also nicht sicher, ob das vielleicht weiter fortgeschritten ist oder nicht, aber es scheint, dass SendAsync nicht die richtige Art von Anfrage sendet, und ich bin mir nicht sicher, warum:
var request = new HttpRequestMessage(HttpMethod.Post, loginEndPoint);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
request.SetBrowserRequestMode(BrowserRequestMode.NoCors);
request.SetBrowserRequestCache(BrowserRequestCache.NoStore); //optional
request.Content = formParamsEncoded;
HttpResponseMessage formResponse = await httpClient.SendAsync(request);

Ich habe bereits Stunden damit verbracht, eine Möglichkeit zu finden, dies zum Laufen zu bringen und die E-Mail zu senden, wie es bei Web-API-Projekten der Fall ist, daher wäre ich für jede Hilfe dankbar.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post