브라우저에서 보낸 HTTP 요청의 헤더를 변경할 수 있습니까?
나는 편안한 디자인으로 찾고 있어요 및 HTTP 메소드 (사용하고자하는 POST, GET가능한 한, ...) 및 HTTP 헤더를. 난 이미 HTTP 메소드 것을 발견 PUT하고 DELETE브라우저에서 지원되지 않습니다.
이제 동일한 리소스의 다른 표현을 얻고 자 Accept하며 요청 헤더를 변경하여이를 수행하고 싶습니다 . 이 Accept헤더에 따라 서버는 동일한 리소스에 대해 다른보기를 제공 할 수 있습니다.
문제는 브라우저에이 헤더를 변경하도록 지시하는 방법을 찾지 못했다는 것입니다.
<a..>태그는이 유형 속성 좋은 후보처럼 보였다 MIME 타입을 가질 수 있지만, 헤더 (Firefox에서 그것을 변경할 수 있습니다 여전히 브라우저 기본이었다 about:config로 network.http.accept.default키).
당신이하려는 방식대로하는 것이 가능하지 않다고 생각합니다.
허용되는 데이터 형식의 표시는 일반적으로 리소스 이름에 확장자를 추가하여 수행됩니다. 따라서 다음과 같은 리소스가 있다면
/resources/resource
그리고 GET /resources/resource당신은 다음과 같은 패턴을 사용할 수 있습니다, 당신은 대신 XML 표현을 원하는 나타 내기 위해, 자사의 HTML 표현을 반환합니다 :
/resources/resource.xml
그러면 서버 측에서 허용되는 콘텐츠 유형 결정 마법을 수행해야합니다.
또는 James가 제안한대로 Javascript를 사용하십시오.
요청 된 표현을 URI에 포함하라는 Milan의 제안에 부분적으로 동의하지 않습니다.
가능하다면 URI는 HTTP 메서드 / 동사 터널링이 아닌 리소스 주소 지정 에만 사용해야 합니다 . 결국 생성 (POST) 또는 업데이트 (PUT)만으로는 목적에 부합하지 않는 경우 특정 비즈니스 작업 (편집, 잠금 등)이 URI에 포함될 수 있습니다.
POST http://shonzilla.com/orders/08/165;edit
URI에서 특정 표현을 요청하는 경우 URI 디자인을 방해하여 결국 더 추악하게 만들고 동일한 위치 (예 : URI)에서 두 개의 서로 다른 REST 개념을 혼합하고 일반적으로 서버 측에서 요청을 처리하기 어렵게 만들어야합니다. 밀라노가 제안하는 것과 많은 사람들이 같은 일을하고 있습니다. Flickr가 바로 이것입니다.
대신,보다 RESTful 접근 방식은 클라이언트가 처리 / 처리 할 수있는 콘텐츠 유형을 서버에 알리고 서버가 클라이언트의 요청을 이행하려고하는 콘텐츠 협상에 사용되는 HTTP 헤더를 사용하여 선호 표현을 인코딩하는 별도의 위치를 사용하는 것 Accept입니다. 이 접근 방식은 HTTP 1.1 표준 의 일부이며 소프트웨어와 호환되며 웹 브라우저에서도 지원됩니다.
이것을 비교하십시오 :
GET /orders/08/165.xml HTTP / 1.1 또는 GET / orders / 08 / 165 & format = xml HTTP / 1.1
이에:
GET / orders / 08 / 165 HTTP / 1.1 수락 : application / xml
웹 브라우저 setRequestHeader에서 XMLHttpRequest개체 메서드를 사용하여 모든 콘텐츠 유형을 요청할 수 있습니다 . 예를 들면 :
function getOrder (year, yearlyOrderId, contentType) {
var client = new XMLHttpRequest ();
client.open ( "GET", "/ order /"+ 연도 + "/"+ yearlyOrderId);
client.setRequestHeader ( "Accept", contentType);
client.send (orderDetails);
}
요약하자면, 주소, 즉 리소스의 URI는 표현과 독립적이어야하며 XMLHttpRequest.setRequestHeader메서드를 사용하면 AcceptHTTP 헤더를 사용하여 표현을 요청할 수 있습니다 .
건배!
Shonzilla
정확히 똑같은 일 (RESTful 웹 서비스)을 찾고 있었는데, 요청에 대한 수락 헤더 (실제로는 모든 요청 헤더)를 수정할 수있는이 파이어 폭스 애드온을 우연히 발견했습니다. 완벽하게 작동합니다.
https://addons.mozilla.org/en-US/firefox/addon/967/
자바 스크립트를 사용하세요!
xmlhttp = new XMLHttpRequest (); xmlhttp.open ( 'PUT', http : //www.mydomain.org/documents/standards/browsers/supportlist) xmlhttp.send ( "여기에 페이지 내용 입력");
Google Chrome 용 ModHeader 확장 프로그램도 좋은 옵션입니다. 원하는 헤더를 설정하고 브라우저에 URL을 입력하기 만하면 url을 누르면 확장 프로그램에서 헤더를 자동으로 가져옵니다. 유일한 것은 히트 할 각 URL에 대한 헤더를 전송하므로 사용 후 비활성화하거나 삭제해야합니다.
'Program Club' 카테고리의 다른 글
| transformClassesWithDexForDebug에서 Gradle 빌드가 느립니다. (0) | 2020.11.18 |
|---|---|
| DynamoDB의 타임 스탬프에는 어떤 데이터 유형을 사용해야합니까? (0) | 2020.11.18 |
| JQuery Ajax 호출 기본 시간 초과 값 (0) | 2020.11.18 |
| static_warning이 있습니까? (0) | 2020.11.18 |
| Microsoft.WindowsAzure.ServiceRuntime 용 NuGet 패키지는 어디에 있습니까? (0) | 2020.11.18 |