Как сказано в заголовке, я настроил минимальный WEB API в .NET8 с CORS, и маршруты, похоже, работают нормально на серверной стороне, и даже протестировал операции CRUD с расширением клиента REST в VSCode. >
Когда я попытался получить данные по одному из маршрутов и записать данные в консоль, вместо этого я получил следующую ошибку:
Доступ для получения по адресу «http://localhost:5050/words» из источника «http://localhost:3000» заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Ниже приведен код компонента React, который извлекает данные из маршрута:
import { useEffect } from "react"
const NewWord = () => {
const submitHandler = async() => {
try {
const response = await fetch("http://localhost:5050/words")
const data = await response.json()
console.log(data)
} catch (error) {
console.error(error)
}
}
return (
New Word
{/* Major container */}
{/* Container */}
{/* Word */}
{/* Definition */}
{/* Example */}
{/* Tags */}
{/* Language */}
English
Hausa
French
Arabic
Wolof
Zulu
Swahili
Igbo
Xhosa
Submit
)
}
export default NewWord
и минимальный API:
using AUB_backend;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// DbContext configuration
builder.Services.AddDbContext(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
// CORS configuration
builder.Services.AddCors(options => {
options.AddPolicy("AllowSpecificOrigin", builder =>
{
builder.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
var app = builder.Build();
// enable CORS
app.UseCors("AllowSpecificOrigin");
app.UseRouting();
// default page
app.MapGet("/", () => "API Default Page");
// CRUD actions
// CREATE a new word
app.MapPost("/words", async(AppDbContext DbContext, Word newWord) => {
DbContext.Words.Add(newWord); // add new word to db
await DbContext.SaveChangesAsync(); // save changes to db asynchronously
return Results.Created($"/words/{newWord.Id}", newWord);
});
// READ all words
app.MapGet("/words", async(AppDbContext DbContext) => {
var words = await DbContext.Words.ToListAsync(); // fetch words from db
return Results.Ok(words);
});
// READ an existing word by Id
app.MapGet("/words/{id}", async(AppDbContext DbContext, int id) => {
var word = await DbContext.Words.FindAsync(id); // fetch word from db using Id
if (word is not null)
{
return Results.Ok(word);
}
else
{
return Results.NotFound();
}
});
// UPDATE a word
app.MapPut("/words/{id}", async(AppDbContext DbContext, int id, Word updatedWord) =>
{
var word = await DbContext.Words.FindAsync(id);
if (word is null)
{
return Results.NotFound();
}
// update word properties
word.Term = updatedWord.Term;
word.Definition = updatedWord.Definition;
word.Example = updatedWord.Example;
word.Tags = updatedWord.Tags;
word.Language = updatedWord.Language;
await DbContext.SaveChangesAsync(); // save changes to db
return Results.Ok(word);
});
// DELETE an existing word
app.MapDelete("words/{id}", async(AppDbContext DbContext, int id) => {
var word = await DbContext.Words.FindAsync(id); // find word by Id
if (word is null)
{
return Results.Ok(word);
}
DbContext.Words.Remove(word); // remove word from db
await DbContext.SaveChangesAsync(); // save changed
return Results.NoContent(); // return a 204 response (No Content)
});
app.Run();
Подробнее здесь: https://stackoverflow.com/questions/791 ... a-from-the
Я настроил CORS в минимальном API серверной части, и у меня возникли проблемы с получением данных из интерфейса React. ⇐ C#
Место общения программистов C#
1731208275
Anonymous
Как сказано в заголовке, я настроил минимальный WEB API в .NET8 с CORS, и маршруты, похоже, работают нормально на серверной стороне, и даже протестировал операции CRUD с расширением клиента REST в VSCode. >
Когда я попытался получить данные по одному из маршрутов и записать данные в консоль, вместо этого я получил следующую ошибку:
Доступ для получения по адресу «http://localhost:5050/words» из источника «http://localhost:3000» заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Ниже приведен код компонента React, который извлекает данные из маршрута:
import { useEffect } from "react"
const NewWord = () => {
const submitHandler = async() => {
try {
const response = await fetch("http://localhost:5050/words")
const data = await response.json()
console.log(data)
} catch (error) {
console.error(error)
}
}
return (
New Word
{/* Major container */}
{/* Container */}
{/* Word */}
{/* Definition */}
{/* Example */}
{/* Tags */}
{/* Language */}
English
Hausa
French
Arabic
Wolof
Zulu
Swahili
Igbo
Xhosa
Submit
)
}
export default NewWord
и минимальный API:
using AUB_backend;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// DbContext configuration
builder.Services.AddDbContext(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
// CORS configuration
builder.Services.AddCors(options => {
options.AddPolicy("AllowSpecificOrigin", builder =>
{
builder.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
var app = builder.Build();
// enable CORS
app.UseCors("AllowSpecificOrigin");
app.UseRouting();
// default page
app.MapGet("/", () => "API Default Page");
// CRUD actions
// CREATE a new word
app.MapPost("/words", async(AppDbContext DbContext, Word newWord) => {
DbContext.Words.Add(newWord); // add new word to db
await DbContext.SaveChangesAsync(); // save changes to db asynchronously
return Results.Created($"/words/{newWord.Id}", newWord);
});
// READ all words
app.MapGet("/words", async(AppDbContext DbContext) => {
var words = await DbContext.Words.ToListAsync(); // fetch words from db
return Results.Ok(words);
});
// READ an existing word by Id
app.MapGet("/words/{id}", async(AppDbContext DbContext, int id) => {
var word = await DbContext.Words.FindAsync(id); // fetch word from db using Id
if (word is not null)
{
return Results.Ok(word);
}
else
{
return Results.NotFound();
}
});
// UPDATE a word
app.MapPut("/words/{id}", async(AppDbContext DbContext, int id, Word updatedWord) =>
{
var word = await DbContext.Words.FindAsync(id);
if (word is null)
{
return Results.NotFound();
}
// update word properties
word.Term = updatedWord.Term;
word.Definition = updatedWord.Definition;
word.Example = updatedWord.Example;
word.Tags = updatedWord.Tags;
word.Language = updatedWord.Language;
await DbContext.SaveChangesAsync(); // save changes to db
return Results.Ok(word);
});
// DELETE an existing word
app.MapDelete("words/{id}", async(AppDbContext DbContext, int id) => {
var word = await DbContext.Words.FindAsync(id); // find word by Id
if (word is null)
{
return Results.Ok(word);
}
DbContext.Words.Remove(word); // remove word from db
await DbContext.SaveChangesAsync(); // save changed
return Results.NoContent(); // return a 204 response (No Content)
});
app.Run();
Подробнее здесь: [url]https://stackoverflow.com/questions/79174045/i-set-up-cors-in-my-backend-minimal-api-and-i-have-issues-fetching-data-from-the[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия