728x90
서버 설정을 한 후에 API 를 호출하려고 할 때 API 가 호출이 안 될 때가 있다.
CORS 문제 때문에 API 가 호출이 안되는 경우가 있는데 그 부분을 해결하는 방법이다.
일단 자신의 터미널이든 VSCode 이든 default.conf 를 열어준다.
- nano /etc/nginx/sites-available/default
우선 Https 적용을 했다면 아래와 같이 나올 것 이다. (.... 은 비공개 처리)
server {
server_name testHomepage.com ; // 내 홈페이지 도메인
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
if ($request_method = 'OPTIONS') {
return 204; # No Content
}
}
listen 443 ssl; # managed by Certbot
ssl_certificate ...........by Certbot
ssl_certificate_..............; # managed by Certbot
include.............. # managed by Certbot
ssl_dhparam ............; # managed by Certbot
}
server {
if (.............) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name ................. ;
return 404; # managed by Certbot
}
https 적용을 안했다면 아래의 게시물을 보고 오세요.
https://jangstory.tistory.com/163
다시 이어서 하자면 자신이 연결할 API 주소와 Proxy 설정을 추가해 주는 방법이 있다.
location /api/ { // api
proxy_pass https://my_connect_page.or.kr/api/; // 자신이 연결할 도메인 + (/api/)
proxy_set_header Host my_connect_page.or.kr; // 자신이 연결할 도메인
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
if ($request_method = 'OPTIONS') {
return 204; # No Content
}
}
이렇게 추가를 해줘야 한다. 전체코드로는
server {
server_name testHomepage.com ; // 내 홈페이지 도메인
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
if ($request_method = 'OPTIONS') {
return 204; # No Content
}
}
location /api/ { // api 추가
proxy_pass https://my_connect_page.or.kr/api/; // 자신이 연결할 도메인 주소 + (/api/)
proxy_set_header Host my_connect_page.or.kr; // 자신이 연결할 도메인 주소
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
if ($request_method = 'OPTIONS') {
return 204; # No Content
}
}
listen 443 ssl; # managed by Certbot
ssl_certificate ...........by Certbot
ssl_certificate_..............; # managed by Certbot
include.............. # managed by Certbot
ssl_dhparam ............; # managed by Certbot
}
server {
if (.............) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name ................. ;
return 404; # managed by Certbot
}
마지막으로 제일 중요한 프론트 파트 (안드로이드 스튜디오 ) 에서 주소를 바꿔줘야한다.
class NetworkUrl {
static const stationBaseUrl =
//이전에 썼던 url
// "https://my_connect_page.or.kr/api/chrstnList/operationInfo/";
// my_connect_page.or.kr -> testHomepage.com
"https://testHomepage.com/api/chrstnList/operationInfo/";
}
이렇게 하면 CORS 문제를 해결하고 API 호출을 할 수 있게 됩니다.
'aws' 카테고리의 다른 글
AWS 도메인 및 https 적용하는 법 Part.3 (4) | 2024.11.13 |
---|---|
AWS 도메인 및 https 적용하는 법 Part.2 (3) | 2024.11.06 |
AWS 도메인 및 https 적용하는 법 Part.1 (0) | 2024.10.30 |
AWS EC2 ssh로 VSCode 연결방법 (0) | 2024.10.23 |
Flutter - Ec2 인스턴스 Web 호스팅 하기 Part.4 (2) | 2024.10.16 |