일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- hybrid
- swift
- TypeScript
- https
- beanstalk
- nextjs
- Elastic Beanstalk
- JavaScript
- S3
- node
- angular4
- 네이티브
- 안드로이드
- 감사일기
- 페이스북
- 카카오톡
- Route53
- angular
- cors
- AWS
- 알려줌
- node.js
- php
- Android
- ios
- react
- NeXT
- 도메인
- fanzeel
- 웹뷰
- Today
- Total
쪼렙 as! 풀스택
.htaccess 설정으로 CORS 에러 제거하기. 본문
Angular 는 SPA 방식이므로, 단순하게 index.html 파일이 열리고 앵귤러로 만들어진 Javascript 파일만 다운로드 되고나면, 웹앱이 돌아가기 시작한다. 그래서 서버 비용도 아낄 겸 FindBM.com 을 개발할 때 초기에는 S3-static web hosting 을 이용해 서버리스로 구성하고, API 서버는 기존의 서버를 이용했었다.
상황
1. 도메인 FindBM.com 은 S3 스태틱 웹호스팅을 이용했다. (서버리스)
2. 필요한 데이터 통신을 위한 API 서버는, 기존에 사용하던 (다른 앱 서비스를 위해 돌리던) API 웹서버를 이용하기로 했다.
그랬더니, 도메인이 다르기 때문에 CORS 크로스 오리진 에러가 나는것이다.
일반 네이티브 앱에서 API 통신을 할 때는, 일반 Request 를 해서 문제가 없었는데, 브라우저에서 Javascript 내부에서 통신하는 것은 보안 문제가 있기 때문에 도메인이 다르면, CORS 에러가 난다는것이다.
해결
- API 서버의 .htaccess 를 수정해서 cross origin 에 안걸리도록 수정을 해줬다.
1 2 3 | Header set Access-Control-Allow-Origin "findbm.com" Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" | cs |
- Access-Control-Allow-Origin 에는 특정 도메인이 접근가능하도록 설정해 둘 수 있다. 와일드카드(*)를 이용해서 어디서든 접근가능하게 할 수도 있겠지만, 써드파티앱을 지원하기전엔, 보안상 문제가 있을 수 있기 때문에 특정 도메인을 지정해 주어야겠다.
덕분에 Pre-Flight 통신 개념도 알게되고 정말 공부 많이 했다.
...
그런데 다른 이유 때문에,
결국엔 그냥 Findbm.com 위한 서버를 하나 더 돌려서 쓸데없는 일이 되어버렸다. ㅋ
'개발 일지 > Web & Server' 카테고리의 다른 글
17.11.15. 페이스북의 알림기능 따라 만들기. Fanzeel.com - Angular4 (0) | 2017.11.15 |
---|---|
17. 10. 11. TypeScript 의 window 객체에 property 추가하기. Google Analytics 추적코드 심기, (0) | 2017.10.11 |
17.09.28 Angular4 - Route 상태 저장해두기. RouteReuseStrategy 구현. (0) | 2017.09.28 |
17.09.15 - 토르3 - 라그나로크 팬질 홈 작업 중, 브라우저 blob캐시, 위지윅 tinyMCE, 정규식, CDN 서버 (0) | 2017.09.14 |
Angular4, SEO 와 페이스북 공유 크롤링 봇을 위한 몸부림 (1) | 2017.06.16 |