보라코딩

Day 34, mini project (asp.net과 react의 CORS 문제 해결!) 본문

개발자가 되었다?

Day 34, mini project (asp.net과 react의 CORS 문제 해결!)

new 보라 2023. 10. 10. 19:10

내일부터 미니 프로젝트 한달간 시작이고

오늘은 어떻게 진행할지 설명 들었다.

 

 

 

 

 

 

아래 블로그 참고하면

VS에서 asp.net과 리액트 한번에 불러올 수 있다.

 

 

ASP.NET Core(닷넷 코어) + React(리액트) Visual Studio(비주얼 스튜디오) 프로젝트 생성

백엔드의 ASP.NET Core API와 프론트엔드의 React를 VisualStudio에서 프로젝트를 생성하고 설정 및 실행하는 방법을 알아보겠습니다. VSCode 또는 CLI로 프로젝트 생성하는 방법은 아래 글을 참고하세요. ht

bundw.tistory.com

 

 

 

 

 

그런데 생각보다 불편해서 나는 

VS에서 asp.net 하고

VSC에서 React 하려고 한다.

 

 

 

 

 

 

Backend

 

 

 

 

 

 

 

StudyController.cs

 


using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;

namespace backend.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class StudyController : Controller
    {
        [DisableCors]
        [HttpGet("")]
        public string Study()
        {
            return "good";
        }
        
    }
}

 

 

 

 

 

Program.cs

Cors 에러 때문에 또 고생함

C#은 처음이라..........ㅎ


namespace backend
{
    public class Program
        {
        public static void Main(string[] args)
        {
            var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

            var builder = WebApplication.CreateBuilder(args);

            builder.Services.AddCors(options =>
            {
                options.AddPolicy(name: MyAllowSpecificOrigins,
                                  policy =>
                                  {
                                      policy.WithOrigins("http://localhost:3000");
                                  });
            });

            // Add services to the container.

            builder.Services.AddControllers();
            // Learn more about configuring Swagger/OpenAPI at 
https://aka.ms/aspnetcore/swashbuckle
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseHttpsRedirection();

            app.UseCors(MyAllowSpecificOrigins);

            app.UseAuthorization();


            app.MapControllers();

            app.Run();
        }
    }
}

 



 

 


 

 

 

Frontend

 

 

app.js

 

import "./App.css";
import React, { useEffect, useState } from "react";
import axios from "axios";

function App() {
  const [data, setData] = useState("");

  useEffect(() => {
    axios
      .get("/study")
      .then((response) => {
        setData(response.data);
      })
      .catch((error) => {
        console.error("Error:", error);
      });
  }, []);

  return (
    <div className="App">
      <p>{data}</p>
      <p>abc</p>
    </div>
  );
}

export default App;

 

 

 

 

package.json

proxy 추가!

{
  "name": "study",
  "version": "0.1.0",
  "private": true,
  "proxy": "https://localhost:7078",
  "dependencies": {

 

 

 

 

 

 

 

'개발자가 되었다?' 카테고리의 다른 글

Day 36, mini project_2  (0) 2023.10.12
Day 35, mini project_1  (0) 2023.10.11
Day 33, React (HTTP)  (1) 2023.10.06
Day 32, React  (0) 2023.10.05
Day 31, React  (0) 2023.09.27