2013-07-24 4 views
4

tcp를 통해 호스트에 직접 액세스하는 것보다 HTTP 404 응답의 내용을 쉽게 얻을 수있는 방법이 있습니까?HTTP 404 응답의 응답 내용을 얻는 방법

HTTP/1.1 404 Object Not Found 
Server: CouchDB/1.3.0 (Erlang OTP/R15B03) 
Date: Wed, 24 Jul 2013 08:32:50 GMT 
Content-Type: text/plain; charset=utf-8 
Content-Length: 41 
Cache-Control: must-revalidate 

{"error":"not_found","reason":"missing"} 

답변

3

Rebol HTTP 스키마는 실제로 이것을 염두에두고 고안되지 않았으며 HTTP를 통한 서비스가 아니라 브라우저에서와 같은 방식으로 내용을 읽도록 조정되었습니다.

그 말에, 당신은 REBOL이 다른 응답 코드를 처리하는 방법을 파괴하는 프로토콜을 해킹 할 수

in-http-scheme: func [does [block!]][ 
    do bind :does bind? last body-of get in system/schemes/http/handler 'open 
] 

in-http-scheme [ 
    remove-each [code response] response-actions [find [400 403 404] code] 
    append response-actions [400 success 403 success 404 success] 
] 

여기서주의해야 할 점은 HTTP 프로토콜이 시작되었다한다는 것이다 (모든 http 포트가 열려/독서). HTTP가 시작되지 않은 경우response-actions여전히 액세스 할 수 있습니다

select body-of get in system/schemes/http/handler 'open quote response-actions: 

당신은 따라서 마지막 응답 라인을 얻을 수 있습니다 : 당신이 이상 서비스를 위해 설계된 체계를 필요로하기 위하여려고하고있다 또는

in-http-scheme [response-line] 

을 HTTP. REST protocol (두 버전, 하나는 uses cURL이고 하나는 customised HTTP scheme을 사용하지만 좋지는 않습니다). Rebol 2 버전이지만 Rebol 3 버전에 대한 계획이 있습니다.

+0

Chris에게 도움이되는 답변 주셔서 감사합니다. 하나의 작은 점은 Firefox와 Chrome 모두 HTTP 응답의 내용을 404 응답 코드가 표시 되더라도 표시합니다. IE9는 표준 페이지를 찾을 수 없습니다라는 메시지를 표시합니다. 나는 그것이 옮긴 웹의 경우라고 생각하지만 모두가 아직 따라 잡지 못했습니다. TCP를 통한 연결은 사용 사례에 가장 적합한 옵션처럼 보입니다. –

+0

사실 저는 15 년 전에 '브라우저에서했던 것과 같은 방식'을 명시해야했습니다. – rgchris

0

크리스토퍼 로스 길 모든 헤더 간단한 접근을 허용하며, 심지어 OAuth를 처리 REBOL위한 REST 프로토콜을 만들었다 :

는 콘텐츠 404 응답의 샘플이다. 자세한 내용은 여기를 참조하십시오.

http://www.ross-gill.com/page/REST_Protocol 

불행히도 현재 Rebol 2에만 해당되며 HTTP 요청에 대한 컬 사용에 따라 달라집니다.

+0

응답 John에게 감사드립니다. 나는 ChrisRG의 REST 프로토콜이 컬을 호출한다고 생각한다. REBOL의 TCP 프로토콜 지원을 중단해야하는 REBOL 전용 솔루션을 찾고 있습니다. 그건 그렇고, 나는 정말로 헤더보다 더 많은 것을 얻고 싶다. –

+0

Rebol 전용 버전이 있습니다 ([해당 기사] (http://www.ross-gill.com/page/REST_Protocol)에 링크 됨). 그것은 좋지 않습니다 (컬 솔루션은 더 잘 작동합니다). – rgchris

관련 문제