#javascript #c# #asp.net-core #cors
#javascript #c# #asp.net-core #cors
Вопрос:
Впервые пытаюсь создать api с asp.net ядро, я использую ASP.NET Ядро 3.1. Я сталкиваюсь с этой консольной ошибкой при попытке отправить запрос GET:
Access to XMLHttpRequest at 'https://localhost:5001/api/items/1' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я перепробовал много решений на этом сайте и от других, и они, похоже, не работают для меня.
Вот что у меня есть для моей стороны Javascript:
const sendRequest = async function(url) {
try {
let response = await axios.get(url);
return response;
} catch (error) {
console.error(error);
return [];
}
};
Вот что у меня есть в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowMyOrigin",
builder => builder.WithOrigins(
"http://localhost:8080/")
.WithMethods("POST", "GET", "PUT")
.WithHeaders("*")
);
});
services.AddDbContext<DBContext>(opt =>
opt.UseSqlServer(Configuration.GetConnectionString("DatabaseName")));
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//app.UseAuthentication();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("AllowMyOrigin");
//app.UseAuthorization();
//app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Если это слишком мало информации, я попытаюсь уточнить, но, как я уже сказал, я впервые делаю что-то подобное, связанное с политикой cors.
Ответ №1:
Конструктор.С оригинальными («http://localhost:8080 /»)
Пожалуйста, обратите внимание, что указанный URL-адрес не должен содержать завершающую косую черту ( /
). Пожалуйста, измените код, как показано ниже, затем проверьте, хорошо ли он работает.
services.AddCors(options =>
{
options.AddPolicy("AllowMyOrigin",
builder => builder.WithOrigins(
"http://localhost:8080")
.WithMethods("POST", "GET", "PUT")
.AllowAnyHeader()
);
});
Ответ №2:
Пожалуйста, попробуйте добавить это внутри
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
}