Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- angular
- ios
- nextjs
- JavaScript
- 카카오톡
- 도메인
- 페이스북
- node
- angular4
- 네이티브
- Route53
- hybrid
- beanstalk
- node.js
- Elastic Beanstalk
- swift
- AWS
- 웹뷰
- 알려줌
- NeXT
- 감사일기
- TypeScript
- php
- 안드로이드
- react
- https
- cors
- fanzeel
- S3
- Android
Archives
- Today
- Total
쪼렙 as! 풀스택
React - localhost 에서 cookie samesite 이슈 해결하기. 본문
크롬의 새로운 쿠키 정책에 의해서,
개발 환경인 localhost에서 쿠키를 이용한 로그인 유지기능에 문제가 생겼다.
** cookie 에 SameSite 옵션을 'None'으로 해야만 CORS 가 가능하다.
** SameSite 옵션이 'None' 인 경우, Secure 옵션은 true 여야만한다. -> 사이트가 https 여야만 한다.
이 두가지 전제때문에, 몇군데 손을 봐야만 했다.
1. PHP >= 7.3 에서 SameSite 옵션 설정하기.
$expire = time() + 3600
setcookie('cookieName', 'cookieValue', ['expires'=>$expire, 'httponly'=>true, 'samesite'=>'None', 'secure'=>true, 'path'=>'/']);
2. 서버 헤더 설정
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, x-requested-with, origin ...
Access-Control-Allow-Origin: https://localhost:3000
3. axios - option 의 withCredentials = true, crossDomain = true 로 준다.
const opt = { method:'get', url: URL, crossDomain: true, withCredentials: true }
4. 프로젝트 루트에 .env 파일을 추가
HTTPS=true
이렇게 하면 https://localhost:3000 으로 접속할 수 있다.
크롬에서 인증서가 유효하지 않다고 경고가 뜨는것은 살포시 무시해준다.
물론, Production 환경에서는, allow origin 도 사용하지 않고, samesite 도 설정해주지 않으면 보안에 도움이 될것이다.
'개발 일지 > Web & Server' 카테고리의 다른 글
React에서 Socket 연결을 Custom Hook 이용하여 구성해 보았다. (0) | 2021.01.31 |
---|---|
PHP 코드 수정이 바로 적용되지 않을 때, opcache disable 시키기. (0) | 2020.11.19 |
안드로이드 하이브리드앱 웹뷰 WebView 에서 카카오톡 로그인 (앱) 사용하기 (2) | 2019.11.23 |
MySQL, 정렬한 기준으로 1:1로 Join 해서 데이터 가져오기. group by 안쓰고 해결;; (0) | 2019.09.03 |
iamport 이용하여, 정기결제 붙이기. (0) | 2019.08.15 |
Comments