Веб-API ASP.NET Core 8.0: проблема с Cors при использовании CMS (Терминал четыре)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Веб-API ASP.NET Core 8.0: проблема с Cors при использовании CMS (Терминал четыре)

Сообщение Anonymous »

Я создал веб-API ASP.NET Core 8.0, который отлично работает в скриптах Google и на веб-сайте, созданном в блокноте. Однако, когда я пытаюсь связаться с ним из системы управления контентом (четвертый терминал), он выдает ошибку CORS.

Доступ для загрузки по адресу «https:/». /a.someting.edu/Newsletter/api/newsletter» из источника «https://t4.something.edu» заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: у него нет HTTP ок, статус

Я просто пытаюсь выполнить POST и не понимаю, почему это будет работать со скриптом Google и обычным сайтом, но не сайт, размещенный на CMS?
Файл My Program.cs:
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();

Система управления контентом Терминала 4

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);
}


Я пытался установить режим no-cors, однако это привело к ошибке 415 неподдерживаемого типа носителя.
Включено в мою программу.cs Файл — это промежуточное программное обеспечение cors, которое я нашел в Microsoft Learn Cors, та же проблема, и я не уверен, что настроил его правильно, поскольку мне все еще нужно установить заголовок ответа на веб-сервере в Access-Control-Allow-Origin = * . Что подтверждается файлом web.config:








Не знаю, что еще можно попробовать или где искать, чтобы веб-API работал должным образом?
Обновить
Код контроллера
[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");
}
}


Подробнее здесь: https://stackoverflow.com/questions/788 ... minal-four
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»