Vercel과 react-admin을 조합하면range 헤더에 오류가 발생할 수 있음을 주의하십시오

React Admin 및 nextjs를 조합하고 싶어서 필기에 빠졌어요.
또한, 지금 이 오류를 묻고 있기 때문에 해결할 수 있는 문장의 아래에 보충을 하였다

전제: React Admin


React Admin의 표준 데이터인 Providerra-data-simple-rest를 활용한 경우Content-Range 제목을 페이지 스타일로 활용한다.또한 Chrome에 대한 대응 건너뛰기Range 머리로 사용합니다.
https://github.com/marmelab/react-admin/blob/7aa5559ef8552605b02dadf277ae2a2f38e86c79/packages/ra-data-simple-rest/src/index.ts#L57-L61

원래 Range 헤더는

  • https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Range
  • https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Range
  • Range는 HTTP 요청 머리글로 서버가 반환해야 하는 문서 섹션을 표시합니다.
    따라서 "아니, 웹페이지 이용 레인지 헤드는 어떠냐"는 심정은 승리적이고, 선의로 해석하면 "웹페이지 사용법도 서버가 답장해야 할 글의 부분이라고 할 수 있다"고 억지로 판단할 수 있다.

    오류 발생 조건


    여기에 이번에 사용한 샘플을 배치하였다.비록 그렇긴 하지만, 기본 내용도 ts화 정도의 것에 불과하다
  • source: https://github.com/terrierscript/example-range-error
  • demo: https://example-range-error.vercel.app/api/hello
  • 현지에서 시운전을 하다


    우선 이곳에서 이것을 운전해 보세요.이게 잘 돌아가요.
    $ curl http://localhost:3000/api/hello
    {"name":"John Doe"}
    
    Range 헤더를 추가합니다.이것은 당연히 문제없다
    $ curl http://localhost:3000/api/hello -H "Range: foo=0/1"
    {"name":"John Doe"}
    

    Vercel에서 이동


    우선 정상적으로 돌아가야 한다.이동
    $ curl https://example-range-error.vercel.app/api/hello
    {"name":"John Doe"}
    
    다음 문제의 원본 헤더
    $ curl https://example-range-error.vercel.app/api/hello -H "Range: foo=0/1"
    A server error has occurred
    
    INTERNAL_SERVER_ERROR
    
    이끼.참고로 Functions 로그에도 아무런 로그가 없어요. 그 전에 이미 이 기록이 있었을 수도 있어요.
    아마도 Vercel 측에서 처리하려고 했으나 실패한 것 같다.

    비상대책은 어떻게 합니까?

    ra-data-json-server라면 레인지 헤더를 사용하지 않았기 때문에 당분간 이곳을 사용하면 피할 수 있다
  • https://github.com/marmelab/react-admin/blob/cfb937962d4b49753af965b7ee3d2d7035a1e3e3/packages/ra-data-json-server/src/index.ts
  • 추기: Vercel 회사의 대답


    다음과 같은 답변을 받았습니다.
    I can see that your usage of the Range​header is actually incorrect and was able to get a successful response by adjusting the syntax of the header as documented by MDN.
    Notice that I get only 10 bytes back in my response when I issue the following request for the byte range of 0 - 10 and don't run into any errors:
    "랭지 헤드 사용법이 정확하지 않기 때문에 아래처럼 이동합니다.
    그래서?
    $ curl https://example-range-error.vercel.app/api/hello -H "Range: bytes=0-10"
    {"name":"Jo%
    
    레인지 헤드의 유닛이 부정확한 상황에서 무시를 기대했지만 부정확한 실현이 있었던 것 같다.
    다행히 React Admin의 DataProvider를 선택할 수 있으므로 Range 헤더를 사용하지 않는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기