새 가져오기 표준에 의해 시작된 요청을 탐지하려면 어떻게 해야 합니까?일반적으로 어떻게 AJAX 요청을 감지해야 합니까?
서버에서는 수신 요청이 AJAX임을 아는 것이 유용할 수 있습니다.
대부분의 js 라이브러리는XMLHttpRequest
그래서 제공합니다.HTTP_X_REQUESTED_WITH: XMLHttpRequest
, 그러나 Chrome의 구현이나 Github의 새로운 폴리필 모두 비슷한 헤더를 사용하지 않습니다.그렇다면 요청이 AJAX임을 어떻게 감지할 수 있습니까?
개시자를 식별하는 요청이 다음에 대한 표준을 통해 시행되지 않는 이유는 무엇입니까?fetch
그리고.XMLHttpRequest
? 의사결정을 위해 다른 무언가를 사용해야 합니까(예: 고객이 응답하여 기대하는 콘텐츠 유형을 제공하는 것)?
Github의 폴리필 저장소, 특히 이 코멘트에서 이 문제를 확인해보세요.
그 이후로X-Requested-With
헤더는 표준이 아니며 일부 누락된 동작을 제공하는 래퍼를 사용하고 있습니다.
자세한 안내가 필요한 경우 포장지 코드의 다음 줄을 확인합니다.
function headers(options) {
options = options || {}
options.headers = options.headers || {}
options.headers['X-Requested-With'] = 'XMLHttpRequest'
return options
}
이니시에이터를 식별하는 요청이 표준을 통해 적용되지 않는 이유
상관없으니까요.
HTTP 클라이언트는 원하는 것을 요구합니다.서버가 그들에게 줘야 합니다.
고객의 성향에 따라 고객에게 다른 무언가를 제공하는 것은 해결하는 것보다 더 많은 문제를 야기하는 경향이 있습니다.사용자 에이전트 스니핑이 대표적인 예입니다.
의사결정을 위해 다른 무언가를 사용해야 합니까(예: 고객이 응답하여 기대하는 콘텐츠 유형을 제공하는 것)?
네.
그Accept
헤더는 HTTP 리소스를 여러 형식으로 사용할 수 있을 때 클라이언트가 선호하는 형식을 지정할 수 있도록 특별히 제공됩니다.
새로운 대답은 대부분의 브라우저가 이제Sec-Fetch-Mode
헤더에는 다음과 같은 옵션이 있습니다.
Sec-Fetch-Mode: cors
Sec-Fetch-Mode: navigate
Sec-Fetch-Mode: no-cors
Sec-Fetch-Mode: same-origin
Sec-Fetch-Mode: websocket
사용 사례에 따라 ajax는 다음과 같은 요청이 있습니다.navigate
, 또는 그 외의navigate
아니면websocket
. 이 조건이 존재하는 경우 이 조건을 사용할 수 있으며 다음으로 폴백합니다.X_REQUESTED_WITH
그렇지않으면.아니면 어떤 상황에서는Sec-Fetch-Mode
다른 경우에 대한 기본값을 가질 수 있는 충분한 상황에 대한 자신감을 줄 수 있습니다.
확인 방법 — 백엔드의 머리글(예: express.js):
headers['sec-fetch-mode'] == 'navigate'
HTTP_X_REQUESTED_를 설정하는 구체적인 예는 다음과 같습니다.머리글 포함:
fetch("/url", {
method: "POST",
headers: {
"X-Requested-With": "XMLHttpRequest",
},
});
언급URL : https://stackoverflow.com/questions/33662318/how-do-i-detect-requests-initiated-by-the-new-fetch-standard-how-should-i-detec
'programing' 카테고리의 다른 글
Web Api + HttpClient:비동기 작업이 보류 중인 동안 비동기 모듈 또는 핸들러가 완료되었습니다. (0) | 2023.09.28 |
---|---|
MySQL Workbench는 결과를 BLOB로 표시합니다. (0) | 2023.09.28 |
PHP에서 특정 유형의 객체를 확인하는 방법 (0) | 2023.09.28 |
각도 컴파일러는 무엇을 "컴파일"합니까? (0) | 2023.09.28 |
PHP는 주 번호별로 주 시작일과 종료일을 가져옵니다. (0) | 2023.09.28 |