api get 요청에서만 timeout 에러가 발생합니다.

조회수 1404회

api 요청시 POST, PUT, DELETE 는 아무 문제없이 정상 처리되는데, GET 요청만 항상 timeout이 생긴다면 뭐가 문제일까요...ㅎㅎ;

현재 react-native로 작업중이며, 동일 코드로 안드로이드에서 요청시 아무문제 없이 잘 받아와지는데 ios에서만 해당 문제가 생기네요.

요청주소가 http이기는 하나 NSAllowsArbitraryLoads도 true로 설정해뒀고 혹시몰라 NSExceptionDomains 설정까지 다 했는데, 오로지 get 요청에서만 문제가 생기는걸로 봐서는 http 요청이 문제는 아닌거 같기도 하고...

혹시 뭐라도 짚이는거 있으시면 도움좀 부탁드립니다 ㅠㅠ

추가정보:

  1. axios 를 사용해서 데이터를 요청합니다.
  2. get 요청으로 받아오는 데이터는 단순히 유저이름과 기타유저정보를 포함하고있는 아주 작은양은 json 데이터입니다.
  3. timeout 시간은 10000ms 로 설정되어있습니다.
  4. 서버는 node express 를 사용중입니다.
  5. 서버에서는 BadRequestError: request denied 를 뱉어냅니다.
  • get 요청시 http 헤더 및 body를 보여주세요. 데스크탑에서 재현해볼 수 있을 듯 한데요. 정영훈 2018.11.23 19:10
  • 코드를 못봐서 잘은 모르겠지만 명시적인 리턴이 없는거 아닌가 싶네요. 서버가 응답을 마치지 않고 계속 응답을 하는 중인 상태에 빠지면 타임아웃 납니다. 엽토군 2018.11.23 21:29
  • @정영훈 body는 따로 없고 헤더는 { 'Content-Type': 'application/json', 'cs-token': '로그인시 발급받은 유저 토큰' } 이렇게 보내고 있습니다. 김한수 2018.11.25 18:04
  • @정영훈 @엽토군 그런데 바디, 헤더나 return 관련 문제는 아닌거 같은게... 동일한코드로 안드로이드에서는 아무문제 없이 잘 작동하나, 오로지 ios에서만 해당 문제를 겪고있습니다 ㅠㅠ. post, delete, put 도 만약 실패한다면 열심히 http관련 이슈라고 생각하고 찾아볼텐데 get에서만 에러가 발생하니 답답할 따름이네요 김한수 2018.11.25 18:07

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    이렇게 raw header 를 알려주세요.

    서버에서 오류가 발생하는 경우이기 때문에 클라이언트에서 전송하는 어떤 값에 따라 오류가 날 듯 합니다.

    의심이 가는 값중에 하나가 user-agent 값입니다.

    서버에서 클라이언트 값으로 필터링하는지 보세요.

    요새는 웹방화벽이나 혹은 보안 라이브러리등을 사용하기 때문에 유효하지 않은 헤더값이면 충분히 막을 수 있습니다.

    GET https://www.delmadang.com/ HTTP/1.1
    Host: www.delmadang.com
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: ko,en-US;q=0.9,en;q=0.8,ja;q=0.7
    Cookie: DL%5FBBS=K2=&K1=&PC=&ST=&RC=; ASPSESSIONIDQEAAQRBB=KIKJLKPANDBMMHDOBGKDFDDP
    
    • 우선, 조금 늦게 답변드렸는데도 답글 달아주셔서 감사합니다. 위에 댓글 작성후에 이것저것 시도해보다가 해결했는데, 알고보니 get 요청시 body에 빈 객체를 넣어서 보내면 생기는 문제더군요 ㅠㅠ. 왜 ios 에서만 그런 에러가 발생하는지는 모르겠으나 어찌되었건 get 요청시는 body를 undefined로 설정함으로써 해결했네요. 도움 감사드립니다 :) 김한수 2018.11.25 19:55

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)