✔️ 이 글을 읽기 전 CORS에 대해 잘 모르겠다면 아래 글을 먼저 보자. [CORS 00] CORS, 왜 필요할까? [CORS 01] CORS 기본 동작 과정 CorsConfig.java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Con..
1. 클라이언트에서 HTTP Request시 브라우저가 header에 Origin을 담아서 보냄 2. 서버는 응답 header에 Access-Control-Allow-Origin을 담아서 전송 3. 브라우저가 Origin과 Access-Control-Allow-Origin을 비교 비교 후 Access-Control-Allow-Origin에 Origin이 없거나 다르다면 CORS 에러 발생 출처 교차 출처 리소스 공유 (CORS) - HTTP | MDN 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라 developer.mozi..
CORS (Cross-Origin Resource Sharing) 한 도메인에서 로드되어 다른 도메인에 있는 리소스와 상호 작용하는 클라이언트 웹 애플리케이션에 대한 방법을 정의 왜 CORS가 필요할까? CSRF 문제를 방지하기 위해 기본적으로 동일 오리진 정책(SOP)을 사용 승인된 다른 origin에서 데이터를 가져오는 것이 제한됨. 다른 origin에서 데이터를 공유해야 하는 경우가 있을 수 있음. 따라서 데이터 공유를 허용할 특정 origin을 적어놓은 것이 CORS이다. ❓ CSRF(Cross Site Request Forgery) 사이트 간 요청 위조 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격 ❓동일 오리진 정책(SOP..
객체란? A Java object is a member (also called an instance) of a Java class. Java 클래스의 멤버(인스턴스라고도 함) 클래스를 구체화한 것 클래스를 데이터 타입으로 메모리에 생성된 것 state(fields, 상태), behavior(methods, 행동)로 구성 클래스란? A class is the blueprint from which individual objects are created. 개별 객체가 생성되는 기반이 되는 설계도 사용자 정의 데이터 유형, 데이터 타입 객체를 생성할 때 사용 객체지향 프로그래밍(OOP, Object-Oriented Programming) 기본적으로 기능과 논리보다는 데이터 또는 객체를 중심으로 소프트웨어 설계를..
코드 정리한 Git repository 아래 git repository에 코드 업로드했으니 참고하면서 보면 됩니다. GitHub - wjdwn03/jwt: Spring Boot - JWT 발급, 재발급 코드 정리 / MySQL & Redis 두 가지 버전 업로드 예정 Spring Boot - JWT 발급, 재발급 코드 정리 / MySQL & Redis 두 가지 버전 업로드 예정 - GitHub - wjdwn03/jwt: Spring Boot - JWT 발급, 재발급 코드 정리 / MySQL & Redis 두 가지 버전 업로드 예정 github.com JWT 발급, 재발급 프로젝트 구조 (Spring Boot) ※ 발급, 재발급에 반드시 필요한 파일만 적었습니다. ※ exception, request, r..
배열 만들기 배열 생성 시 배열 타입에 대한 default 값으로 초기화 배열 초기값 자료형 초기값 int 0 double 0.0 char '0' boolean false String null 사용자 정의 class null 생성과 동시에 값 할당하기 int[] b = new int[] {1, 3, 5}; // new int[] 는 생략 가능 int[] b = {1, 3, 5}; 주의 사항 선언과 생성을 따로 하는 경우 초기화할 때 꼭 'new T[ ]'를 같이 적어줘야 한다. // X int[] a; a = {1, 3, 5}; // 컴파일오류, Array constants can only be used in initializers 이 에러 문구 나옴. // O int[] a; a = new int[]{..
연산자 우선 순위 ✔️ 연산자 우선순위가 같을 경우 연산 진행 방향(결합방향)에 의해 결정 3 * 4 * 5 1️⃣ 3 * 4 2️⃣ 12 * 5 x = y = 3 1️⃣ y = 3 2️⃣ x = 3 연산 예시 // 1 - Type mismatch byte a = 10; byte b = 20; byte c = a + b; // Type mismatch 에러 발생 // 산술 연산의 최소 단위는 int이기 때문에 'a+b'는 내부적으로 int타입으로 바껴있음. // byte c = (byte) (a + b); 이런 식으로 바꾸든가 해야 함. // 2 - Type mismatch int a = 10; long b = 20; int c = a + b; // Type mismatch 에러 발생, 더 큰 타입이 있..
변수 자료를 저장하기 위한 메모리 공간 타입에 따라 크기가 달라짐 메모리 공간에 값을 할당 후 사용 타입 ✔️ 기본형(primitive type) 미리 정해진 크기의 memory size로 표현 변수 자체에 값 저장 모든 값 타입은 메모리의 스택(stack)에 저장 ex) int, double, char 등 ✔️ 참조형(reference type) 크기가 미리 정해질 수 없는 데이터의 표현 변수에는 실제 값을 참조할 수 있는 주소만 저장 메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장 기본형(Primitive Type)의 크기 * 실수(부동 소수점)의 연산은 정확하지 않다. 유효 자릿수를 활용하여 반올림처리하기 형변환 ❓ 변수의 타입을 다른 타입으로 변환하는 ..