plusfriend / auto_reply

플러스친구 자동응답 API
308 stars 92 forks source link

[장고] POST 방식 ,django 403 error #515

Closed contail closed 6 years ago

contail commented 6 years ago

Django를 이용하여 구현중입니다. keyboard는 문제가 없지만 message에서 아래와 같은 에러가 발생합니다.

서버 >> "POST /message HTTP/1.1" 403 2629

어플 >> [관리자에게만 발송되는 메시지입니다] 사용자 봇서버에 에러가 감지 되었습니다. 내용:[잘못된 응답입니다. response is not OK(200) : 403 / Forbidden]

''' view.py ''' from django.shortcuts import render from django.http import JsonResponse import json from django.views.decorators.csrf import csrf_exempt

def keyboard(request) : return JsonResponse({ 'type' : 'buttons', 'buttons' : ['1', '2'] })

@csrf_exempt def message(request): message = ((request.body).decode('utf-8')) return_json_str = json.loads(message) return_str = return_json_str['content']

return JsonResponse({
        'message': {
                'text': "type "+return_str
        },
        'keyboard': {
                'type': 'buttons',
                'buttons': ['1','2']
        }
})

url => url(r'^keyboard/', frontend.views_v2.keyboard), url(r'^message', frontend.views_v2.message),

http://server.com/keyboard 까지 응답은 잘 호출되고있습니다! ㅠㅠ

여러 가능성을 열어두고 문제점들을 살펴보고 있습니다. 저와 같은 경험을 해보신분 제발 조언 부탁드릴게요! 제 생각으로는 @csrf_exempt 요 데코레이터가 인식이 잘 안되는지, allow된 ip 대역대가 있는지.. 궁금하네요.. 서버는 aws ec2 쓰고 있고, ALLOWED_HOSTS = ['*'] 입니다.

SerenityS commented 6 years ago

API 주소에서 keyboard 빼보세요. 지금도 POST를 /keyboard/message로 주고 있으니 안되는것 같네요

contail commented 6 years ago

저 부분은 오타입니다 ㅠㅠ

contail commented 6 years ago

url(r'^keyboard/', frontend.apis.kakao_bot.keyboard), url(r'^message', frontend.apis.kakao_bot.message), url(r'^([0-9]+)$', frontend.views.redirect_mobile), url(r'^([a-z]+)$', frontend.views.homepage), url(r'^$', frontend.views.homepage_ko),

url 형식을 이렇게 사용하고 있는데,

   url(r'^([0-9]+)$', frontend.views.redirect_mobile),
   url(r'^([a-z]+)$', frontend.views.homepage),
   url(r'^$', frontend.views.homepage_ko),

=================================== 여기 3군데 url을 주석처리해주니 잘 작동하네요! 아마 카카오 봇 api가 최상단 도메인을 이용해서 url 충돌이 난 것이라고 생각이 듭니다

저처럼 오류 있으신 분들 참고해주세요 ! close 하겠습니다.