posted by 갱우덩 2024. 3. 14. 22:42

소개

안녕하세요, 어느 뷰티 전문가의 글입니다.

오늘은 건강한 피부를 유지하기 위한 뷰티 루틴에 관해 이야기해보겠습니다. 피부는 우리의 외모와 자신감을 결정짓는 중요한 부분입니다. 특히 30~40대 여성분들께서는 더욱 피부 관리에 신경을 쓰고 계실 것으로 알고 있습니다. 이에 건강하고 아름다운 피부를 위한 영양소와 보습제에 대해 자세히 알아보겠습니다.

영양소의 중요성

건강한 피부를 유지하기 위해서는 영양소가 중요합니다. 특히 비타민 A, C, E와 아메리칸올(오메가-3 지방산)은 피부 건강에 큰 영향을 미칩니다. 비타민 A는 피부 재생과 미백 효과가 있으며, 비타민 C는 콜라겐 생성을 촉진하여 피부 탄력을 높여줍니다. 비타민 E는 피부를 보호하고 수분을 유지시켜주는 역할을 합니다. 아메리칸올은 피부를 촉촉하게 유지하고 염증을 줄여주어 피부를 건강하게 해줍니다.

보습제의 선택

피부가 건강한 상태를 유지하기 위해서는 적절한 보습이 필요합니다. 특히 30~40대의 여성분들은 피부 보습에 더욱 신경을 써야 합니다. 보습제를 선택할 때는 피부 타입과 특성을 고려해야 합니다. 건성 피부인 경우에는 보습력이 뛰어난 크림 형태의 보습제를 사용하는 것이 좋고, 지성 피부인 경우에는 가벼운 젤 형태의 보습제를 선택하는 것이 적합합니다. 또한, 보습제에는 피부를 진정시켜주는 성분이 함유되어 있는지 확인하는 것이 중요합니다.

추천하는 영양소와 보습제

  • 비타민 A: 당근, 시금치, 고구마 등에 풍부하게 함유되어 있습니다. 비타민 A가 풍부한 음식을 섭취하여 피부 건강을 촉진하세요.
  • 비타민 C: 오렌지, 레몬, 파인애플 등에 풍부하게 함유되어 있습니다. 비타민 C가 풍부한 과일을 섭취하여 피부를 환하고 탄력있게 유지하세요.
  • 비타민 E: 아몬드, 아보카도, 씨앗류 등에 풍부하게 함유되어 있습니다. 비타민 E가 풍부한 음식을 섭취하여 피부를 보호하고 수분을 유지하세요.
  • 아메리칸올(오메가-3 지방산): 고등어, 참치, 아몬드 등에 풍부하게 함유되어 있습니다. 오메가-3 지방산이 풍부한 음식을 섭취하여 피부를 촉촉하게 유지하세요.
  • 보습제: 피부 타입에 맞는 보습제를 선택하여 사용하세요. 건성 피부인 경우에는 유수분 크림, 지성 피부인 경우에는 수분 젤을 사용하는 것이 좋습니다.

결론

건강한 피부를 유지하기 위해서는 영양소와 적절한 보습이 필요합니다. 비타민 A, C, E와 아메리칸올을 포함한 다양한 영양소를 섭취하고, 피부 타입에 맞는 보습제를 선택하여 사용하여 피부 건강을 유지하세요. 건강한 피부는 자신감을 높이고 아름다운 외모를 유지하는 데 중요한 역할을 합니다. 함께 건강한 피부를 위한 뷰티 루틴을 실천하여 빛나는 피부를 만들어보세요.

posted by 갱우덩 2021. 5. 13. 20:15

Visual Studio 2010 으로 빌드Openssl Library 1.1.1k Static Library

 

분할 압축해서 올립니다.

 

OpenSSL-1.1.1k-VS2010-SL.z01
10.00MB
OpenSSL-1.1.1k-VS2010-SL.z02
10.00MB
OpenSSL-1.1.1k-VS2010-SL.zip
0.74MB

 

맘대로 사용하시면 됩니다. 이상하면 알려주세요. Build만 하고 저도 안써봤어요~ 

 

여러가지 이유로 Visual Studio 2010 을 아직 사용중인데, Shared Library 필요하시면 댓글 다시면

 

Build 해서 올립니다. 뭐~ 걍 Build 하는 방법 검색해서 하셔도 되겠지만~ ㅎㅎ~

posted by 갱우덩 2020. 11. 10. 21:34

A.CS 파일을 복사해서 A-backup.CS 파일을 만들어 놓으니 이런 error가 생긴다.

 

A-backup.CS 파일은 project에 컴파일 대상으로 추가해 놓지 않았는데도 컴파일 대상이 되는건지

 

이런 error 가 생긴다. C# 시작한지 2일만에 2시간 넘게 잡아 먹은 황당한 error가 이런 간단한 이유였다니~ 

 

ㅠㅠ~ 

posted by 갱우덩 2020. 6. 9. 14:34

옮겨다 놓습니다.

 

modeless dialog 생성 후 삭제 시 내부적으로 자신을 삭제하지 않을 경우 GDI 객체가 소멸되지 않는 문제가 있다.

일반적으로 modeless dialog를 닫게 되면 PostNcDestroy가 호출되지 않아서 직접 PostNcDestory 메시지를 보내줘서 호출해야 한다. PostNcDestroy 내부에서는 자신을 delete 하는 코드가 있어야 정상적으로 메모리가 해제된다.

따라서 아래와 같이 해결할 수 있다.

.h

virtual void PostNcDestroy();

.cpp

void TestDlg::PostNcDestroy() { delete this; CDialogEx::PostNcDestroy(); }

PostNcDestroy()를 virtual로 override 해놓은 다음 외부에서 해당 dialog에 DestroyWindow를 호출한다면
CWnd의 OnNcDestroy()가 호출되면서 내부에서 PostNcDestroy()를 호출하기 때문에 virtual로 선언된 PostNcDestroy()가
호출 된다.



출처: https://ymcoder.tistory.com/247 [자료 저장소]

 

 

 

posted by 갱우덩 2020. 3. 19. 20:06

퍼오며 편집 정리합니다.

 

http POST 통신을 구현할 일이 생겨서 작업하다가 응답코드가 200 아닌 다양한 값들이 많이 생기는걸 보고는

 

이거 꼭 정리해 둬야 겠다는 충동을 느낀다~ ^^

 

근데, 이미 너무 잘 정리해 놓은 분들이 많네~

 

젤 잘해놓은 건, 위키백과 ㅋㅋㅋ 할말 없음.

 

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

 

List of HTTP status codes - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Response codes of the Hypertext Transfer Protocol This is a list of Hypertext Transfer Protocol (HTTP) response status codes. Status codes are issued by a server in response to a clien

en.wikipedia.org

링크 한번이라도 더 타기 싫어서 정리해 놓음

 

서버에서 주는 응답 코드에 대해서 정리 해놓음.

 

client가 server에 http request를 하면 response를 하는데 결과값 코드도 포함해서 보내줍니다.

 

테이블 잘 정리해 놓은 분이 있어서 또 짜집기 해서  올립니다.

 

출처: https://ooz.co.kr/260 [이러쿵저러쿵] 

 Response Class Code 

 Response Class 의미

 설명

 100

 Informational (정보)

 리퀘스트를 받고, 처리 중에 있음.

 200

 Success (성공)

 리퀘스트를 정상적으로 처리함.

 300

 Redirection (리디렉션)

 리퀘스트 완료를 위해 추가 동작이 필요함.

 400

 Client Error (클라이언트 오류)

 클라이언트 요청을 처리할 수 없어 오류 발생

 500

 Server Error (서버 오류)

 서버에서 처리를 하지 못하여 오류 발생

 

4번과 5번은 에러이기는 한데, 간단히 차이점을 설명하자면 4xx 에러는 클라이언트의 잘못된 요청으로 서버에서 처리하지 못한 것이고, 5xx 에러는 클라이언트의 요청은 문제가 없으나, 서버에서 처리중에 서버 문제로 인해 오류가 발생한 것이라고 생각하시면 됩니다


200 번대 응답(Response) : 성공(Success)

 

200

OK

* 요청 정상 처리.

204

No Content

* 요청 정상 처리하였지만, 돌려줄 리소스 없음.

* 응답에 어떠한 엔티티 바디(Entity Body)도 포함하지 않음.

* 서버에서 처리 후, 클라이언트에 정보를 보낼 필요가 없는 경우 사용. 

206

Partial Content

* Range가 지정된 요청인 경우, 지정된 범위만큼의 요청을 받았다는 것을 알려줌. 

 

 

 

* 300 번대 응답(Response) : 리디렉션(Redirection)

 

301

Moved Permanently

* 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한다는 것을 나타냄. (영구적인 URI 변경)

302

Found

* 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한 다는 것을 나타냄. 301과 유사하지만, 302는 일시적인 URI 이동) 

303

See Other

* 이 응답은 요청에 대한 리소스는 다른 URI에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타냄. 302 코드와 같지만, 303은 리디렉션 위치를 GET 메서드를 통해 얻어야 한다고 명확하게 되어 있음. 

304

Not Modified

* 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줌.

300번대로 분류되어 있지만, 리디렉션과는 관계없는 처리를 함.

307

Temporary Redirect

* 임시로 페이지를 리다이렉트 함.

 

 

 

* 400 번대 응답(Response) : 클라이언트 에러 (Client Error)

 

400

Bad Request

* 클라이언트의 요청 구문이 잘못됨.

* 브라우저는 이 응답을 200 OK 응답과 동일한 형태로 취급함.

401

Unauthorized

* 요청 처리를 위해 HTTP 인증(BASIC 인증, DIGEST 인증) 정보가 필요함을 알려줌.

접근 허용을 차단함. 최초 요청에는 인증 다이얼로그 표시하고, 두번째는 인증 실패 응답을 보냄. 

403

Forbidden

* 접근 금지 응답. Directory Listing 요청(서버 파일 디렉토리 목록 표시) 및 관리자 페이지 접근 등을 차단하는 경우의 응답. (파일 시스템 퍼미션 거부, 허가 되지 않은 IP 주소를 통한 액세스의 거부 등)

* 서버는 엔티티 바디에 접근 거부에 대한 이유를 명시하여 보낼 수 있음.

404

Not Found

* 클라이언트가 요청한 리소스가 서버에 없음

405

Mothod Not Allowed

* 허용되지 않는 HTTP 메서드를 사용함. 

 

 

 

* 500 번대 응답(Response) : 서버 에러 (Server Error)

 

500

Internal Server Error

* 서버에서 클라이언트 요청을 처리 중에 에러가 발생함.

503

Service Unavailable

* 서버가 일시적으로 요청을 처리할 수 없음.

* 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줌.

504

Gateway Timeout

* 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨.

505

HTTP Version Not Supported

* 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줌.

출처: https://ooz.co.kr/260 [이러쿵저러쿵]

fildder 라는 프로그램 통해서 특정 site에 로그인하는 과정을 capture해 보았는데요, Htts 로 통신한느 과정이 많던데~

 

어쨌든. response code가 다양하게 옵니다.

 

주로 200 번대 응답과 300 번대 응답의 자주 보입니다. 300 번대 응답이 많은건 왤까???

 

 

 

 

 

 

 

 

 

 

'IT-Network > Http' 카테고리의 다른 글

( http ) GET방식 과 POST방식 (펌)  (0) 2020.02.13
posted by 갱우덩 2020. 3. 6. 09:07

[system]

전체화면 캡쳐 : CMD + SHIFT + 3

부분화면 캡쳐 : CMD + SHIFT + 4

 

 

 

[Xcode]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted by 갱우덩 2020. 3. 5. 20:35

누가 물어본다 java 설치했냐고?,  java 뭘 설치해야 이거에 대해서

 

어~ 라고 대답해야 할지 고민하다가 아래에 정리 잘해놓은걸 퍼다 놓아요~

 

cmd 창 열고, java -version 이라고 입력해서 메세지가 나오면 설치된거고 아니면~ 설치 안된거임.

 

그리고 자바 설치하러가면 JRE 가 다운로드 됨~ ^^

 

 

https://devbox.tistory.com/entry/%EC%8B%A4%ED%96%89

 

[Java] Java SE, JDK, JRE

Java SE, JDK, JRE - Java SE(Java Platform, Standard Edition)는 자바의 표준안이다. 자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있다. 이것은 구체적인 소프트웨어가 아니고 그..

devbox.tistory.com

 

Java SE, JDK, JRE

 

- Java SE(Java Platform, Standard Edition)는 자바의 표준안이다. 자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있다. 이것은 구체적인 소프트웨어가 아니고 그 소프트웨어의 설계도라고 할 수 있다. 소프트웨어에서는 설계도라는 표현 대신에 명세서(spec, specification)이라는 말을 사용한다. 이 명세서에 따라서 Java가 만들어지게 된다. Java SE 7은 버전 7에 대한 명세서이다. 자바는 계속 진화하고 있는 기술이다. 이 명세서는 JCP(Java Community Process, http://jcp.org)라는 조직을 통해서 만들어진다.

 

- JDK(Java Development Kit)는 Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어다. Java 개발자라면 JDK를 다운받아서 설치해야 한다. 여기에는 Java 프로그램을 실행하면 Java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구 그리고 JRE가 포함되어 있다. 즉 개발자를 위한 자바 버전이다.

 

- JRE(Java Runtime Environment)는 자바가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어 있다. 자바로 만들어진 프로그램을 구동하려고 한다면 이것을 설치한다. 일반인을 위한 자바 버전이라고 할 수 있다.

 

- JVM(Java Virtual Machine) JVM은 자바가 실제도 구동하는 환경이다. 자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고, 하드웨어나 운영체제에 따라서 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라서 만들어진 JVM이 알아서 해결한다. 즉 하나의 자바 프로그램을 만들면 어떤 환경에서도 실행할 수 있는 것이 바로 JVM의 역할이라고 할 수 있다.

 

JVM은 자바를 실행하기 위한 가상 기계라고 할 수 있다. 컴퓨터(머신)를 사용해서 자바를 실행하기 위한 가상 컴퓨터라고 이해하면 좋을 것이다.

가상 기계는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어이며, 컴퓨터의 성능이 향상됨에 따라 점점 더 많은 하드웨어들이 소프트웨어화되어 컴퓨터 속으로 들어오고 있다.

그 예로는 TV와 비디로를 스프트웨어한 윈도우 미디어 플레이어던가, 오디오 시스템을 소프트웨어화한 윈엠프 등이 있다.

이와 마찬가지로 '가상 컴퓨터'는 실제 컴퓨터(하드웨어)가 아닌 스프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 된다.

 

자바로 작성된 어플리케이션은 모두 이 가상 컴퓨터에서만 실행되기 때문에, 자바 어플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

이 관계를 그림으로 나타내면 아래와 같다.

 

cp.)

자바로 프로그래밍을 하기 위해서는 먼저 JDK를 설치해야 한다. JDK를 설치하면, 자바가상머신과 자바클래스 라이브러리외에 자바를 개발하는데 필요한 프로그램들이 설치된다.

 

(1) JDK의 bin 디렉터리의 주요 파일

1) javac.exe: 자바 컴파일러, 자바소스코드를 바이트코드로 컴파일한다.

c:\jdk1.6\work\javac Hello.java

 

2) java.exe: 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행한다.

c:\jdk1.6\work\java Hello

 

3) javap.exe: 역어셈플러, 컴파일된 클래스파일을 원래의 소스로 변환한다.

c:\jdk1.6\javap Hello > Hello.java

 

vo.) 바이트코드

JVM이 이해할 수 있는 기계어, JVM은 바이트코드를 다시 해당 OS의 기계어로 변환되어 OS로 전달한다.

 

cf.) jar.exe: 압축프로그램, 클래스파일과 프로그램과 프로그램의 실행에 관련된 파일을 하나의 jar파일(.jar)로 압축하거나 압축해제한다.

 

cf.) JDK와 JRE

JDK: 자바개발도구

JRE: 자바실행환경

 

JDK: JRE + 개발에 필요한 실행파일(javac.exe등)

JRE: JVM+클래스라이브러리

 

프롬프트 창에서 자바 파일 실행

Hello.java 작성 ---> javac.exe --->Hello.class 생성 ---> java.exe ---> 실행



출처: https://devbox.tistory.com/entry/실행 [장인개발자를 꿈꾸는 :: 기록하는 공간]

 

posted by 갱우덩 2020. 3. 4. 23:15

 

이부분은 소프트웨어에 themida에서 제공하는 매크로 코드가 삽입되었는지를 확인하는 곳입니다.

 

 

특정 매크로의 체크를 해재하고 protect 를 실행할 수 있는데, performance에 문제가 생기거나 특정 매크로가 잘못 실행될 수도 있다.

 

Read from MAP

file themida를 적용할 파일과 같은 위치에 이름이 같고 확장자가 map 인 파일이 필요하다. 코드를 재배치 하기 위한 MAP 파일을 선택할 수 있고 check 해제를 통해서 제외시킬 수도 있다.

 

.... 이번 글은 매우 짧다. ㅋ

 

posted by 갱우덩 2020. 2. 13. 17:27

구글링한거 복사해다 놓음. 펌!

 

https://mommoo.tistory.com/60

https://blog.naver.com/2000sky2/220619302087

https://simsimjae.tistory.com/218

 

 

 

https://mommoo.tistory.com/60

 

GET방식 과 POST방식

오늘 포스팅 할 내용은, Http 프로토콜이 제공해주는 7가지 메서드들 중 웹서비스 개발에 주로 사용하는, GET 메서드와 POST 메서드에 대하여 기술한다. GET메서드 POST메서드 란? 위에서 말했다시피, 웹 서비스..

mommoo.tistory.com

 

오늘 포스팅 할 내용은,

 

Http 프로토콜이 제공해주는 7가지 메서드들 중

 

웹서비스 개발에 주로 사용하는,

GET 메서드와 POST 메서드에 대하여 기술한다.

 

 

 

GET메서드 POST메서드 란?


 

  위에서 말했다시피, 웹 서비스 개발에 주로 사용하는 메서드 이다.

 

사용자가 URL을 브라우저 주소창에 작성하고 엔터를 누르면

 

원하는 웹페이지가 나온다. 사용자는 웹페이지를 보기위해 단순한 일을 한 것 이지만,

특정 웹페이지를 사용자 웹브라우저에게 보여주기 위해서는 내부적인 처리들이 있다.

 

그 내부적인 처리에서, 클라이언트가 서버에게 웹페이지를 보여달라고 말하는 것을

 

우리는 요청 이라 부르고, 서버가 클라이언트에게 요청받은 것에 대한 대답으로, 웹페이지

 

내용을 표현하기 위해 html문서로 주는것을 응답 이라 부른다. 

 

 

 

HTTP 패킷


 

  클라이언트가 서버로 요청을 했을때, 보내는 데이터를 HTTP 패킷이라 표현한다. 

 

HTTP 프로토콜을 쓰므로, 앞에 HTTP가 붙고 인터넷을 통해 보내는 데이터를 패킷이라 표현하므로,

 

HTTP패킷 이라 부른다. HTTP패킷의 구조는 크게 헤더 와 바디로 나뉘어진다.

 

 

  헤더에는 7가지 HTTP 메서드 방식중 무엇을 썻는지, 클라이언트의 정보, 브라우저 정보,

 

접속할 URL 등등 과 같은 클라이언트 정보를 담는다. 

  

바디는 보통 비어있다. 하지만, 특정 데이터를 담아서 서버에게 요청을 보낼 수 있다.

 

이러한 웹 개념아래, 우리는 GET메서드와 POST메서드를 통해서 요청을 할 수 있다.

 

 

 

GET방식 vs POST방식


  

  두 방식 모두, 서버에 요청을 하는 메서드이다.

 

클라이언트가 서버에 요청을 할때, 제공해야 하는 자원이 있다고 하자. 

 

예를 들면, 어떤 홈페이지의 로그인 페이지에서 로그인을 하는 경우이다.

 

아이디 와 패스워드는 클라이언트가 작성한 후, 그 정보를 서버에 요청하여

 

클라이언트가 작성한 아이디와 패스워드가 올바른 것인지 검사를 해야한다.

 

위의 예시를 보듯, 요청에는 자원을 보내야 하는경우가 존재한다.

 

  • GET방식으로 데이터를 보내기

클라이언트의 데이터를 URL뒤에 붙여서 보낸다. 위에서 쓴 예시처럼 아이디 패스워드를 보낸다고 하면,

 

www.example.com?id=mommoo&pass=1234 (예시로 쓴 URL입니다. 존재하지 않습니다.)

 

이런식으로 보낸다. URL 뒤에 "?" 마크를 통해 URL의 끝을 알리면서, 데이터 표현의 시작점을 알린다.

 

데이터는 key 와 value 쌍으로 넣어야 한다 윗 예시에서의 key는 id 랑 pass고 value는 mommoo랑 1234가 되겠다.

중간에 &마크는 구분자 이다. 2개이상의 key - value 쌍 데이터를 보낼때는 &마크로 구분해준다.

 

URL에 붙이므로, HTTP패킷의 해더에 포함되여 서버에 요청한다.

 

따라서, GET 방식에서 BODY에 특별한 내용을 넣을 것이 없으므로 BODY가 빈상태로 보내진다.

 

그러므로, 헤더의 내용중 BODY 데이터를 설명하는 Content-Type이라는 헤더필드는 들어가지 않는다.

 

URL형태로 표현되므로, 특정 페이지를 다른사람 에게 접속하게 할 수 있다. 

 

또한 간단한 데이터를 넣도록 설계되어, 데이터를 보내는 양의 한계가 있다.

 

  • POST방식으로 데이터를 보내기

POST 방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드이다.

 

GET방식은 URL에 데이터를 붙여서 보내는 반면, POST방식은 URL에 붙여서 보내지 않고

 

BODY에다가 데이터를 넣어서 보낸다.  

 

따라서, 헤더필드중 BODY의 데이터를 설명하는 Content-Type이라는 헤더 필드가

 

들어가고 어떤 데이터 타입인지 명시한다.

 

컨텐츠 타입으로는 여러가지가 있지만, 몇가지를 적자면,

 

  1. application/x-www-form-urlencoded
  2. text/plain
  3. multipart/form-data

 

등이 있다.

 

따라서 POST 방식으로 데이터를 보낼때는 위와 같이 컨텐츠 타입을 꼭 명시해줘야한다.

 

보통 작성하지 않는 경우는 1번의 컨텐츠 타입으로 셋팅된다.

 

1번의 컨텐츠 타입은, GET방식과 마찬가지로 BODY에 key 와 value 쌍으로 데이터를 넣는다. 똑같이 구분자 &를 쓴다.

 

2번의 컨텐츠 타입은, BODY에 단순 txt를 넣는다.

 

3번의 컨텐츠 타입은, 파일전송을 할때 많이 쓰는데 BODY의 데이터를 바이너리 데이터로 넣는다는걸 알려준다.

 

자바와 같이 oop 프로그래밍에서는 BODY에 데이터를 InputStream/OutputStream 클래스를 통해서 읽고/쓰고 한다.

 

 

GET방식 과 POST방식에 대한 상식


  • POST방식이 GET방식보다 보안측면에서 더 좋다?

   POST든 GET이든 보내는 데이터는 전부 클라이언트측에서 볼 수 있다. 단지 GET방식은 URL에 데이터가 표시되여 별다른 

   

   노력없이 볼 수 있어서지, 두 방식 전부 보안을 생각한다면 암호화 해야한다.

 

  • GET방식이 POST방식보다 속도가 빠르다?

    빠른건 맞다. 하지만 왜 빠른지를 알아야 하는데, 이유는 GET방식의 요청은 캐싱(한번 접근 후, 또 요청할 시 빠르게 접근하기 위해

    

    데이터를 저장시켜 놓는다)때문에 빠른것이다.



출처: https://mommoo.tistory.com/60 [개발자로 홀로 서기]

 

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

좀더 상세히 설명

 

https://blog.naver.com/2000sky2/220619302087

 

HTTP Method(Get과 Post방식)

+HTTP Method(GET&POST)+ 정의 : HTTP 프로토콜은 TCP와 UDP 프로토콜을 기반으...

blog.naver.com

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

https://simsimjae.tistory.com/218

 

GET방식과 POST방식

GET방식과 POST방식? GET방식이란 URL에 key&value 쌍의 형태로 서버에 정보를 전송한다. 그렇기 때문에 HTTP request 헤더에 Content-type이라는 헤더 필드는 필요하지 않다. 바디부분이 비어있다. POST방식이란..

simsimjae.tistory.com

 

GET방식과 POST방식?

 

 

GET방식이란 URL에 key&value 쌍의 형태로 서버에 정보를 전송한다. 그렇기 때문에 HTTP request 헤더에 Content-type이라는 헤더 필드는 필요하지 않다. 바디부분이 비어있다. 

 

POST방식이란 사용자의 입력을 HTTP request 바디 부분에 넣어서 전송한다. 그렇기 때문에 HTTP 요청 헤더에 Content-type 필드를 명시해야 한다. 

 

Content-type 필드는 다음과 같이 3가지의 MIME타입으로 구성되어 있다. MIME타입이란 초기 이메일 시스템에서 첨부파일의 타입을 명시할때 사용하던 타입이다. 바이너리 데이터를 아스키 코드로 변환할때 어떤 바이너리 데이터를 변환 했는지를 명시해야 수신측에서 다시 아스키코드->바이너리 데이터로 정확히 복호화 할 수 있다. 이 방법이 그대로 HTTP에서도 사용 된다. 자세한것은 이 포스트를 읽고 오길 바란다. 

 

  • application/x-www-form-urlencoded
  • text/plain
  • multipart/form-data

 

 

첫번째 컨텐츠 타입의 HTTP 바디 부분에는 GET방식과 마찬가지로 key&value 형태로 사용자의 입력이 들어가있다.

두번째 컨텐츠 타입의 HTTP 바디 부분에는 단순히 텍스트가 적혀있다.

세번째 컨텐츠 타입의 HTTP 바디 부분에는 동영상이나 사진의 바이너리 데이터가 들어가 있다.

 

 

GET방식의 장단점

 

 

GET방식은 사용자가 입력한 값이 url에 그대로 노출되므로 보안에 좋지않다.

하지만, 그 url을 다른 사람들과 공유할수 있으므로, 그 url을 그대로 입력해서 내가 보는 페이지는 남들도 똑같이 볼 수 있다.

 

또한 바이너리 데이터를 전송할수 없다.

GET방식은 요청에 대한 정보를 구분할때 속성=속성값&속성=속성값 이런식으로 KEY VALUE 쌍을 &연산자로 구분을 하게 되는데 바이너리 데이터는 &를 데이터로 취급할수 있기 때문에, GET방식으로는 바이너리 데이터를 전송할수 없게 된다.

-> 서로 다른 데이터간 구분이 불가능함.

 

따라서 바이너리 데이터는 무조건 POST방식으로 전송해야 한다.

 

GET방식을 사용하는 이유중 가장 큰 이유가 바로 다른 사람과의 URL공유 역할이다.

 

POST방식의 장단점

 

 

POST방식은 사용자가 입력한 입력값이 HTTL요청 BODY부분에 들어가기 때문에 사용자가 무엇을 입력했는지 다른사람들이 몰래 볼수가 없기 떄문에 보안에 좋다.

 

또한, 바이너리 데이터를 전송할수 있는데, 그 이유는 브라우저가 서로 다른 데이터간 구분을 알아서 해주기 때문이다.

GET방식의 경우 무조건 &를 통해서 서로 다른 데이터를 구분하는데, 바이너리 데이터는 &를 데이터로 취급하기 때문에 

&가 아닌 형태로 데이터를 구분해야 한다.

 

브라우저는 사용자가 POST방식의 Multipart type 컨텐츠(사진,동영상)를 요청을 했을때, HTTP 바디 부분에는 데이터간 구분자를 임의로 만들게 되는데 예를 들면 다음과 같다.

 

name은 key, filename은 첨부 파일 이름(value)이다. post방식은 보내는 데이터의 양 제한이 없다.

멀티 파트에서 각 파트는 서로 다른 마임 타입을 갖는다. 즉, 서로 다른 타입으로 인코딩 된다는것이다.

 

GET vs POST?

 

GET 방식

1. 속도가 빠르다.

2. URL 공유가 가능하다.

3. 입력값이 그대로 노출된다.

4. 데이터 전송 크기에 제한이 있다.

5. 바이너리 데이터 전송이 불가능하다.

 

POST 방식

1. 속도가 느리다. -> 바디 부분에 데이터를 담아야 하므로

2. 입력값이 노출되지 않는다.

3. 바이너리 데이터 전송이 가능하다.

 

GET방식과 POST방식은 장/단점을 모두 갖고 있기 떄문에 상호 보완적이다. 그렇기 때문에 지금 한가지만 사용되지 않고 두가지 방식이 모두 사용되고 있는 것이다. 상황에 따라 적절한 방식을 사용해야 한다.

 

예를들어, 게시판을 이동할때는 속도가 중요하며 입력값이 노출되어도 상관없다. 그렇기 때문에 GET방식을 사용하고, 

회원가입할때 사용자의 입력값들은 노출되면 안되기 때문에 POST방식을 사용해야 한다.

 

POST방식은 안전하다?

 

 

그렇지 않다. GET방식이든 POST방식이든 전달되는 데이터를 볼 수 있다. 다만, GET방식은 별 노력 없이도 URL에 인풋이 그대로 노출 되기 때문에 더 잘 노출된다는 차이일뿐이다.



출처: https://simsimjae.tistory.com/218 [104%]

 

'IT-Network > Http' 카테고리의 다른 글

http 응답 코드 의미 ( http response code )  (0) 2020.03.19