묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
도커 컨테이너 기동 후 `user-service` 회원 생성 시 `403 Forbidden` 원인
강사님 좋은 강의 감사합니다. 1달간 긴 클라우드 스터디 장정끝에 마지막 순간에 멈춰버렸습니다.ㅠㅠ 유저 생성시점에서 접근이 안되는 이유가 분명 설정의 문제라 생각이 들지만, 어디서 부터 찾아 고쳐야 될지 찾지못해, 부득이 하게 질문을 남기게 되었습니다. 문제 :로컬에서 테스트를 마친 후 정상상태로 도커 마운트 시점 이후회원등록이 안됩니다. Access Denied 가 아닌것이라서 더욱 찾기가 애매해집니다 403 Forbidden 은 Client 가 URI 도달이 가능함에도Server 에서 접근금지 처리가 된 상태라고 알게 되었습니다. 그래서 Gateway 설정에 의심이 갔었는데요, 어찌 바꿔야 될지 갈피가 잡히지 않습니다. api-gatewayu-service > application.yml > 라우트설정 - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/login - Method=POST filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment}- id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/users - Method=GET, POST filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment}- id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/actuator/** - Method=GET filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment}- id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/** - Method=GET filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment} - AuthorizationHeaderFilter 아래는 깃헙Config 설정상태 입니다. 저의 PC IP 입니다 - 192.168.1.197 GitHub 설정 상태 - link: GitHub: spring-cloud-configgateway: ip: 설정값 요약 172.18.0.1- application.yml- ecommerce.yml 172.18.0.5(실패)192.168.1.197(실패)- user-service.yml- order-service.yml HTTP Request 테스트POST 192.168.1.197/user-service/users 요청 Response HTTP/1.1 403 Forbiddentransfer-encoding: chunkedSet-Cookie: JSESSIONID=286DBBDF9D7EF3B4F96C4D7F9E8C7C62; Path=/; HttpOnlyX-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockCache-Control: no-cache, no-store, max-age=0, must-revalidatePragma: no-cacheExpires: 0Content-Type: application/jsonDate: Sun, 27 Jun 2021 07:37:13 GMT{ "status": 403, "error": "Forbidden", "message": "", "path": "/users"} api-gateway-service 서버 로그: 회원 가입데이터 요청시점 Global POST filter End: response status code -> 403 FORBIDDENGlobal PRE filter base message: Spring Cloud Gateway Global FilterGlobal PRE filter Start: request id -> d7f70d5e-1 user-servercie 서버 로그 도달하지 못했으므로, 로그 없음 놓친것은 없는데, 사소한 어딘가의 IP 미스매치로, 접근 금지 필터링이 된듯한 느낌같은 느낌이 참 힘이듭니다...이것에 대해 조언을 구할 수 있을까요? 애러 해결 시도 깃허브의 yml 파일 의 gateway: ip: 실패한 케이스 - user-service.yml- order-service.yml 172.18.0.5(실패) 172.18.0.5 ---> 127.0.0.1(실패) 172.18.0.5 ---> 192.168.1.197(실패) 이번에도 메일에 프로젝트 파일 첨부해 보내드렸습니다. 읽어주셔서 감사합니다.
-
미해결Firebase 서버를 통한 Android앱 HowlTalk 만들기
강의 잘 듣고 있습니다. 그런데 getString이....
강의 잘 듣고 있습니다. 그런데 getString에 문제가 생겼습니다. 어디서 잘 못된건지 모르겠습니다. loginActivity에서 이런 문제가 발생하여 결과값이 잘 되는지 볼 수가 없습니다. 무엇이 잘못된 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
find_if(v.begin(), v.end(), CanDivideBy11());
find_if(v.begin(), v.end(), CanDivideBy11()); 이부분이 이해가 안갑니다 ㅜㅜ 구조체를 만들고 바로 구조체타입 이름으로 함수객체를 바로 쓰고있는데 함수객체를 만들고 쓸려면 CanDivideBy11 canBy11; find_if(v.begin(), v.end(), canBy11(data)); 이런식으로 해야하는거 아닌가요? 이렇게 하면 에러가 나니 아닌건 맞는데 전에 함수객체 시간에서 이해했던것이랑 달라서요 ㅜㅜ
-
미해결대세는 쿠버네티스 (초급~중급편)
minikube에서는 externalTrafficPolicy: Cluster 를 실습할 수 없나요?ㅠ_ㅠ
minikube에서 실습 중인 상태입니다. NodePort 실습 중 pod1, pod2로 트래픽이 분산되는 현상을 볼 수가 없어서요! pod1이 있는 노드로 curl 하면 pod1 만, pod2가 있는 노드로 curl 하면 pod2 만 나오더라구요. 마치 externalTrafficPolicy:Local로 되어있는 것처럼요. 혹시 minikube에서는 externalTrafficPolicy: Cluster 를 실습할 수 없는걸까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
무상태성에 대해 질문드립니다.
안녕하세요 영한님 강의 잘 듣고있습니다 ! 다름이 아니라 '무상태'에 대해 헷갈리는 부분이 있는데요, 결국 상태를 저장할지 말지 결정하는 주체는 서버라고 이해가 되는데 그럼 HTTP를 사용해서 통신을 하는 경우, 서버측에서는 '아 이건 HTTP 규약을 따르는거니까 아무것도 저장하지 않아야지' 라고 판단하는건가요 ? 즉, '무상태 프토토콜'이라는게 상태를 저장하지 않는 것을 '지향하는' 규약이기 때문에 이미 약속이 되어있어서 서버측에서도 저장을 하지 않는건가요 ? 그리고, 만약 세션을 사용해서 서버측에 클라이언트 상태를 저장하거나 하는 경우 HTTP의 stateless한 특성이 사라지게 되는건가요 ??
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
간단한 질문 있습니다.
안녕하세요! 간단한 질문 있습니다. 6:40초 처럼 server is running 까지 완료한 상태에서 밖으로 나가고 싶으면 어떤 키를 눌러야하나요? 보통 exit 이나 control + c였던것 같은데 밖으로 나가지지가 않아서 질문드립니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리터럴만 있을때 |...| 와 @{...}를 사용하는 이유가 뭔가요?
안녕하세요. 앞 부분 질문과 겹치는 감이 있지만 조금은 다른 질문일지도 몰라 질문드려봅니다. 타임리프 템플릿을 거쳤을 때 최종적으로 우리가 원하는 HTML이 나온다면 타임리프가 해야할 일은 모두 완료하는 거잖아요? <button class="w-100 btn btn-secondary btn-lg" onclick="location.href='items.html'" type="button"> 목록으로 </button> 이 부분이 최종적으로 <button class="w-100 btn btn-secondary btn-lg" onclick="location.href='/basic/items'" type="button"> 목록으로 </button> 이렇게 변하길 원하는 거잖아요? 그럼 <button class="w-100 btn btn-secondary btn-lg" onclick="location.href='/basic/items'" th:onclick="Location.href='/basic/items'" type="button"> 목록으로 </button> 이렇게만 해줘도 되는데 리터럴과 표현식의 덧샘이 필요없는 곳에서 th:onclick="|Location.href='@{/basic/items}'|" 이렇게 |...| 과 @{...}를 사용하신 이유가 무엇인가요?
-
미해결처음 배우는 리액트 네이티브
Todo list 프로젝트 준비 부분에서 질문있습니다
backgroundColor: ${({ theme }) => theme.background} // 강의에서 사용된 코드 backgroundColor: ${theme.background} 두 코드 동일하게 동작하는데 왜 화살표 함수를 사용하신건가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
연산자 오버로딩 하는 부분에서 이해가 가지 않는 코드가 있습니다.
operator T* () const { return _ptr; } 연산자 오버로딩 부분 중에 이 부분이 있는데, 다른 것은 앞에 반환 타입이 정해져있는데 이전 C++의 연산자 오버로딩 강의 때는 못본 것 같은데, 이렇게 반환 타입을 따로 정해두지 않는 문법이 있는건가요? 아, 추가로 질문이 있습니다. TSharedPtr에서 Set, Release를 inline 함수로 선언하는 이유가 T가 RefCountable라고 명시를 해두지 않았기 때문에 RefCountable의 멤버함수를 함수 안에서 사용할 수 없어서 인라인 함수로 선언한다고 이해하면 될까요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
모바일에서 연결 오류
먼저 좋은 강의 제공해주셔서 감사합니다 지금까지 잘 이행하던 중 모바일 연결에서 어려움을 겪어 질문합니다. runserver 0.0.0.0:8000으로 서버를 돌리고 cmd 창에서 ipconfig로 나온 ip주소로 모바일에서 연결하면 계속해서 로딩만 되고 결국 원하는 화면이 나오지 않습니다. 같은 wifi를 사용하는데도 그렇네요 ㅠㅠ 그런데 ipconfig에서 나온 주소를 노트북에서 연결하면 또 잘 나옵니다... 왜 이런걸까요...
-
미해결Slack 클론 코딩[실시간 채팅 with React]
질문드립니다.
제로초님 sleact깃헙 api문서엔 채널에 이미지 올리는건 따로 없던데 백엔드를 DM쪽만 설정해두신건가요??
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
MYSQL를 사용해도 괜찮을까요?
지금 강의에서는 몽고DB를 사용하는 것 같은데, 앞으로 지원할 회사의 프로젝트를 위해선 MYSQL을 연습해야해서요. sequelize, MYSQL을 이용해도 앞으로의 강의를 듣는데 문제가 없을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
비트연산에서 or 연산자 질문입니다.
제가 알기로는 or 연산자는 |로 알고있는데 강의에서는 ! 로 설명하고있거든요 1분 9초쯤에 c# 버전에 따라서 다른건가요 ??
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
LOAD_POSTS_REQUEST가 두 번 가는 문제가 생깁니다.
현영님 코드 보고 작성해서 테스트해봤는데 저도 역시 아래 다른 분들처럼 REQUEST가 두 번 가는 현상이 발생하고 있습니다. 오타 점검도 하고 NodeBird 깃허브에서 코드도 참고했는데 다른 점은 딱히 안보이는데 request가 두 번씩 가는 문제가 발생하고 있습니다. 콘솔창으로 로그 찍어봤는데 window.scrollY + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300 이 부분 조건문에 걸려서 한 번 request가 발생하고 스크롤이 맨 끝에 걸리면 그 때 다시 request가 가는 것 같습니다(코드에는 === 조건문 코드는 없습니다...)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RestController질문있습니다.
@Controller인 경우에는 반환형이 String이면 viewresolver가 반환값과 같은 화면을 찾아서 리턴해주신다고 하셨습니다. @RestController인 경우에는 Http Body부분에 리턴값을 넣어서 주신다고 하셨습니다. 그렇다면 @RestController를 선언하면 @GetMapping() public @ResponseBody String method() { ~~~~ } 위와 같이 @ResponseBody를 사용한 효과를 내는 건가요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
messages파일이 여러개 일경우 어떻게 하나요?
application.yml파일어 어떻게 선언하나요?
-
미해결R로 하는 웹 크롤링 - 실전편
에러 코드
Error in which(str_detect(b, "id=\"newEndContents\">")):which(str_detect(b, : argument of length 0 위 에러 메세지가 발생하는데 무엇인지 못찾겠네요. 아래는 코드 입니다. final_data <-NULL i<-1 j<-1 for(j in 1:5) { for(i in 1:2) { date<-Sys.Date()-j date2<-gsub("-","",date) url <- paste0("https://sports.news.naver.com/kbaseball/news/list?isphoto=N&date=",date2,"&page=", i) b<-readLines(url, encoding = "utf-8") library(RJSONIO) b2<-fromJSON(b) b2$list[[1]] a1<-sapply(b2$list, function(x){x$oid}) a2<-sapply(b2$list, function(x){x$aid}) a3<-sapply(b2$list, function(x){x$title}) final_data<-rbind(final_data,cbind(a1, a2, a3)) cat("\n", date2, "-", i, "데이터 수집 중" ) } } setwd("/Users/??/Workspace/R/Projects/CrawlingPro/05") write.csv(final_data, "baseball_news.csv", row.names = F) final_data[,1] final_data[,2] con_url<-paste0("https://sports.news.naver.com/news?oid=", final_data[,1], "&aid=", final_data[,2]) library(stringr) con_url k<-1 con<-c() for (k in 1:length(con_url)) { b<-readLines(con_url[k], encoding="utf-8") b2<-b[which(str_detect(b, "id=\"newEndContents\">")):which(str_detect(b, "news_end_btn"))] b3<-paste(b2, collapse = " ") b3 b3<-gsub("<.*?>", "",b3) b3<-gsub("\t|>| |<", "",b3) con[k] <- b3 cat("\n", k) } baseball_data<-cbind(final_data, con) colnames(baseball_data) <- c("oid", "aid", "head", "cont") write.csv(baseball_data, "baseball.csv", row.names=F)
-
미해결시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script
리눅스 설치?
안녕하세요! 리눅스를 처음으로 배워보고자 강의를 구매한 학생입니다. 정말 초보자라서 사실 리눅스 설치를 어떻게 하는지나 이미 윈도우os가 있는데 이를 설치해도 두가지 os 사용이 한 노트북에서 가능한건지 또한 웹 리눅스 환경(JSLinux, codeonweb)을 사용할 시 이 강의와 실전강의를 따라하는 데 문제가 있을지 궁금합니다. 감사합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
비즈니스 로직을 카프카로 동기화하는 장/단점이 궁금합니다.
안녕하세요, 수업 잘 듣고 있습니다! 질문 : 주문을 함으로써 제품 수량이 감소한다는 것은 비즈니스 로직(요구사항)으로 볼 수 있을 것 같습니다. 도메인 주도 패턴에서는 주문 정보를 생성함과 동시에 제품 재고 정보가 같이 업데이트 되는 것이 하나의 트랜잭션에 묶일 것 같습니다. 이번 카프카 데이터 동기화에서는 이러한 부분을 트랜잭션에 묶지 않고 별도로 후속 동기화 처리를 하는 부분을 설명해주셨습니다. MSA에서는 제품(카탈로그) 서비스 조직과 주문 서비스 조직이 분리되어 있다는 전제 하에 주문을 했다는 것을 알려주고 재고 관리는 제품 서비스 조직에게 일임하는 것인가요? 주문 서비스 팀은 주문을 했다는 사실을 메시지 큐 토픽에 전달함으로써 로직을 마치고, 이후 제품 서비스나 그 외 다른 서비스 팀이 해당 정보를 가지고 재고 관리 등 후처리를 하는 형태인 것인가요? 모노리틱 환경에서만 작업을 해봐서, 데이터를 처리하는 트랜잭션 부분에 대해서 ACID나 BASE라는 용어를 이해는 해도 이를 실무에 적용하는 부분에 대해 애매한 경계선이 있는 것 같습니다. 다시 질문: 1. 트랜잭션으로 묶는 기준이 있을까요? 2. REST로 제품 서비스를 업데이트 하는 로직을 직접 수행하는 것은 바람직하지 않을까요? 3. 데이터 동기화는 향후 제품 서비스 외 확장을 고려하는 것이 목적인가요? 질문이 길어졌는데 읽어주셔서 감사합니다!
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
배열
자식 컴포넌트 porps에commandeId: { type: Array, }지정하고 부모컴포넌트 data에 commandId: ["건우", "신혁"], template에 :commandId="commandId" 했더니 값이 안나옵니다