Wie lassen Sie eine Web -API in C# .NET 8.0 eine 200 Antwort zur Erfüllung einer CORS -Vorfilsanforderung senden?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie lassen Sie eine Web -API in C# .NET 8.0 eine 200 Antwort zur Erfüllung einer CORS -Vorfilsanforderung senden?

Post by Anonymous »

Ich habe eine ASP.NET Core 8.0 -Web -API erstellt, die im Google -Skript und von einer von Notepad erstellten Website funktioniert. Wenn ich jedoch versuche, mit ihm von einer externen Site mit ihm zu kommunizieren, wirft es einen CORS -Fehler

Zugriff auf das Fetch unter 'https://a.someting.edu/Newsletter/api/Anewslslter' von Ursprungs -POSPLAGE 'ASSACTICE. Prüfung der Zugriffskontrolle: Es gibt keinen Http OK -Status

Mein Programm.cs Datei:

Code: Select all

var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
policy.WithOrigins("https://t4.something.edu")
.AllowAnyHeader()
.AllowAnyMethod();
});
});

builder.Services.AddControllers();

// context
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.AddCommandLine(args)
.AddUserSecrets
(true)
.Build();

builder.Services.AddDbContext(option =>
{
option.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
});

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddTransient();
builder.Services.AddScoped();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseStaticFiles();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();
< /code>
Frontend HTML JavaScript -Code < /p>

function send()
{
var url = 'https://a.something.edu/News/api/news';
var headers = {
'X-API-Key' : "something1234",
'Accept': "application/json",
'Content-Type': "application/json;charset=utf-8"
};
var data = {
"email" : document.getElementById("customerEmail").value
};

var payload = JSON.stringify(data);

var options = {
method: "POST",
headers: headers,
body: payload
};

try {
var response = fetch(url, options);
}catch(error) {
alert('Error is : ' + error);
}
alert('Response is - ' + response);
}

In meinem Programm enthalten.cs Datei CORS Middleware, die ich auf Microsoft Learn CORs, das gleiche Problem gefunden habe, und ich bin mir nicht sicher, ob ich das richtig eingerichtet habe, da ich den Antwortheader auf dem Webserver noch so festlegen muss, dass ich auf die Kontroll-Owl-Owl-Owl-Owl-Owl-Own = * zugreifen muss. Dies wird durch die Datei web.config verifiziert:

Code: Select all







< /code>
Controller -Code < /p>
 [Route("api/[controller]")]
[ApiController]
public class NewsletterController(NewsletterContext context) : ControllerBase
{
private readonly NewsletterContext _context = context;

[HttpPost]
public async Task PostNewsletterItem(NewsletterItem newsletterItem)
{
_context.Newsletter_Emails.Add(newsletterItem);

try
{
await _context.SaveChangesAsync();

}
catch (DbUpdateConcurrencyException)
{
throw;
}
return Ok("The record has been saved correctly");
}
}
< /code>
Modellcode < /p>
namespace NewsletterEmails.Models
{
public class NewsletterItem
{
[Key]
public required string Email { get; set; }
}
}
Ich habe versucht, den Modus auf No-CORs festzulegen, dies führt jedoch zu einem nicht unterstützten Fehler mit Medienart 415.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post