Program Club

브라우저에서 보낸 HTTP 요청의 헤더를 변경할 수 있습니까?

proclub 2020. 11. 18. 21:42
반응형

브라우저에서 보낸 HTTP 요청의 헤더를 변경할 수 있습니까?


나는 편안한 디자인으로 찾고 있어요 및 HTTP 메소드 (사용하고자하는 POST, GET가능한 한, ...) 및 HTTP 헤더를. 난 이미 HTTP 메소드 것을 발견 PUT하고 DELETE브라우저에서 지원되지 않습니다.

이제 동일한 리소스의 다른 표현을 얻고 자 Accept하며 요청 헤더를 변경하여이를 수행하고 싶습니다 . Accept헤더에 따라 서버는 동일한 리소스에 대해 다른보기를 제공 할 수 있습니다.

문제는 브라우저에이 헤더를 변경하도록 지시하는 방법을 찾지 못했다는 것입니다.

<a..>태그는이 유형 속성 좋은 후보처럼 보였다 MIME 타입을 가질 수 있지만, 헤더 (Firefox에서 그것을 변경할 수 있습니다 여전히 브라우저 기본이었다 about:confignetwork.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에 대한 헤더를 전송하므로 사용 후 비활성화하거나 삭제해야합니다.

참고 URL : https://stackoverflow.com/questions/374885/can-i-change-the-headers-of-the-http-request-sent-by-the-browser

반응형