.Net 8 API + вызов ajax контроллера: полностью отключить CorsC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 .Net 8 API + вызов ajax контроллера: полностью отключить Cors

Сообщение Anonymous »

Я создал веб-сайт с API, используя .net 8 и Razor, и размещаю свой веб-сайт с помощью AWS Elastik Beanstalk.
Мой веб-сайт позволяет создавать и сохранять тесты, и это с моей стороны работает просто отлично, не только в режиме разработки, но и в опубликованной рабочей версии.
Один человек из Индии пытается помочь мне загрузить тесты, но он получает Cors связанные ошибки постоянно. Независимо от того, что я пытаюсь отключить Cors, он всегда получает ошибку при нажатии «Сохранить». Что бы я ни пытался - из разных потоков SO - всегда приводит к разным ошибкам, каждая из которых длиннее и запутаннее.
Это мой ajax-вызов jQuery, который нужно сохранить:

Код: Выделить всё

Javascript:

Код: Выделить всё

function saveTest() {

var test = generateTestJson(true);
if (test == Result.KO) return false;

toastMessage(Texts.processingData, InformationState.INFORMATION, true, Config.informationTimeout);

var saveMode = SaveMode.Insert;
if (selectedTestId != "") {//Update
saveMode = SaveMode.Update;
testId = selectedTestId
} else {//Save
//check for duplicates
var testName = document.getElementById("Name").value;
var testExists = ddlItemExists("ddlTests", testName);
if (testExists) {
toastMessage(Texts.testAlreadyExists.replace("%0", testName), InformationState.ERROR, false, Config.informationTimeout);
return;
}
}

var deletedElements = generateJsonDeletedElements();

formData.delete('test');
formData.delete('saveMode');
formData.delete('deletedElements');
//
formData.append('test', test);
formData.append('saveMode', saveMode);
formData.append('deletedElements', deletedElements);

$.ajax({
url: '/Test/SaveTest',
method: 'POST',
contentType: false,
processData: false,
data: formData,
success: function (data) {

if (data.status == Result.OK) {
selectedTestId = testId;
formSubmitted = true;
fillTestSelector();
}

showResultStatus(data.status, data.message);
},
error: function (xhr, status, error) {
clearTimeout(informationTimer);
showToast(xhr.responseText, InformationState.ERROR, false, true, "3");
}
})
}

Код: Выделить всё

Program.cs:

Код: Выделить всё

...
builder.Services.AddCors(options =>
{
options.AddPolicy("MyPolicy",
policy =>
{
policy
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true); // allow any origin
}
);
});

var app = builder.Build();

app.UseAuthentication();
app.UseAuthorization();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseWebOptimizer();

//app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseCors("TestMePolicy");

var locOptions = app.Services.GetService();
app.UseRequestLocalization(locOptions.Value);

app.UseStaticFiles();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();

app.Run();
Контроллер:

Код: Выделить всё

[HttpPost]
[EnableCors("MyPolicy")]
public async Task SaveTest(string test, int saveMode, List files, string deletedElements = "")
Самое неприятное то, что он работает нормально из моего местоположения в Европе, но мой друг не может работать из Индии, когда он нажимает «Сохранить», возникает ошибка, связанная с Cors. брошенный, метод контроллера явно не вызывается.
Также непонятно то, что с моей стороны он работает даже без всего этого кода "Program.cs" для отключения Cors, но не с Индия.
Мне действительно нужно полностью отключить Cors, и я проверил множество потоков SO, но безрезультатно.
Любая помощь?

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

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

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

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

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

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

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