5/25

justyoon·2023년 5월 25일
0

기능 테스트 확인

어제 수정한 코드를 바탕으로
get요청 시 게시글 id를 확인할 수 있게 직렬화 필드에 id 추가 후 테스트 해봤다

  • db_status 반영 삭제된 게시글을 불러오거나 수정할 수 없게 예외 처리
  • get id값을 확인할 수 있게 직렬화 필드에 추가
  • 그 외 직렬화 필드 수정 Merge & PR 완료

// test example JSON format
// id = 게시글 id
// writer = writer_id (작성자 id 유저 외부키 참조)

{
    "id": 4,
    "created_at": "2023-05-25T01:51:58.947415+09:00",
    "updated_at": "2023-05-25T12:36:07.703620+09:00",
    "db_status": 1,
    "title": "testttttttt",
    "content": "testt",
    "image": null,
    "media": null,
    "sound": null,
    "writer": 2
}

2. postman에서 form-data로 이미지파일 테스트하기

articles에서 image파일을 받아오도록 프론트엔드 fetch api 테스트를 postman으로 할 수 있단걸 알게 되었다. 간단하게 data format을 form-data로 변경해주면 되는데, 서버를 연결하고 프론트와 연결했을 때 JSON format으로 이미지 파일을 주고 받으려면 어떻게(?) 해야할지 궁금해졌다.

3. corsheaders

구성

Django settings 설정에서 미들웨어의 동작을 구성한다. 다음 세 가지 설정 중에서 하나 이상을 지정해야 한다 적혀있다.

  • CORS_ALLOWED_ORIGINS

  • CORS_ALLOWED_ORIGIN_REGEXES

  • CORS_ALLOW_ALL_ORIGINS
    . . .
    등 등 등

마주한 오류는 유저 인증쪽 기능의 담당이 계셔서 정확히는 알 수 없지만,
유저 인증부분은 항상 관심있는 부분이었고 지난주에 틈틈히 공부해왔다가
오류 코드를 마주치게 되었다.

Access to fetch at 'http://127.0.0.1:8000/users/dj-rest-auth/logout/' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.

"TypeError: Failed to fetch and CORS" 에러가 났을 때, 확인해야 할 부분

  1. 요청 시 잘못된 URL 또는 불완전한 URL을 지정하지 않았는지?.
  2. 서버가 다른 origins 요청을 활성화하기 위해 필요한 모든 CORS 헤더를 다시 보내는지?.
  3. URL에 잘못된 프로토콜을 지정하지 않았는지?.
  4. 요청 시 잘못된 HTTP 메서드 또는 헤더를 지정하지 않았는지?.

CORS_ALLOW_HEADERS: Sequence[str]
The list of non-standard HTTP headers that you permit in requests from the browser. Sets the Access-Control-Allow-Headers header in responses to preflight requests. Defaults to:

CORS_ALLOW_HEADERS = (
    "accept",
    "authorization",
    "content-type",
    "user-agent",
    "x-csrftoken",
    "x-requested-with",
)

The default can be imported as corsheaders.defaults.default_headers so you can extend it with your custom headers. This allows you to keep up to date with any future changes. For example:

from corsheaders.defaults import default_headers

CORS_ALLOW_HEADERS = (
    *default_headers,
    "my-custom-header",
)

확인하고 CORS_ALLOWED_ORIGINS = authorization? 기입해주고 에러 해결


profile
with gratitude, optimism is sustainable

0개의 댓글