programing

JavaScript에서 본문과 함께 GET 요청 보내기(XMLHttpRequest)

bestprogram 2023. 8. 30. 21:53

JavaScript에서 본문과 함께 GET 요청 보내기(XMLHttpRequest)

나는 GET 요청의 본문에서 매개 변수를 가져오는 API와 상호 작용해야 합니다.이것이 최선의 생각이 아닐 수도 있다는 것을 알지만, 이것이 API가 만들어진 방식입니다.

다음을 사용하여 쿼리를 작성하려고 할 때XMLHttpRequest페이로드가 전송되지 않은 것처럼 보입니다.이를 실행하여 네트워크 탭을 확인할 수 있습니다. 요청은 전송되지만 본문은 없습니다(최신 Chrome 및 Firefox에서 테스트됨).

const data = {
  foo: {
    bar: [1, 2, 3]
  }
}
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://my-json-server.typicode.com/typicode/demo/posts')
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
xhr.send(JSON.stringify(data))

axios와 같은 라이브러리는 XMLHttpRequest를 기반으로 하기 때문에 작동하지도 않습니다...

자바스크립트에서 이것을 달성할 수 있는 방법이 있습니까?

아니요, 자바스크립트에서는 본문으로 GET 요청을 보낼 수 없습니다.

페이로드가 단순히 전송되지 않은 것처럼 보입니다.

그것이 맞아요.이는 사양에 정의되어 있습니다.

send(body)메서드는 다음 단계를 실행해야 합니다.

...

  1. 요청 방법이 다음과 같은 경우GET또는HEAD본문을 null로 설정합니다.

또한 Fetch API를 통한 요청은 본문을 허용하지 않습니다.사양에서:

  1. init["body"]가 존재하고 null이 아니거나 inputBody가 null이 아닌 경우 요청의 메서드는GET또는HEAD그런 다음 유형 오류를 던집니다.

API를 수정할 수 있다면 가장 좋을 것입니다.

이 작업이 불가능한 경우 요청을 API로 전달하는 프록시로 사용할 수 있는 서버 측 스크립트를 추가할 수 있습니다.본문 대신 URL에 데이터가 있는 GET 요청으로 이 스크립트를 호출하거나 본문과 함께 POST 요청을 사용할 수 있습니다.그런 다음 이 스크립트는 선택한 언어가 지원하는 한 본문으로 GET 요청을 만들 수 있습니다.

언급URL : https://stackoverflow.com/questions/54810942/send-a-get-request-with-a-body-in-javascript-xmlhttprequest