Avatar billede odsgaard Praktikant
27. april 2009 - 12:32 Der er 3 kommentarer og
1 løsning

HTTP response/ obligatorske headere ?

Hej

Jeg sidder med en java applikation, der skal lave et valid http response på en given forespørgsel. Primært er der tale om, at applikationen skal svare om en request er accepteret eller ej.

Når jeg søger på efter information om emnet, finder jeg mange beskrivelser af hvad de enkelte headere skal indeholde, men ingen beskrivelse af om der er nogle af dem der er obligarotiske.

Eksempelvis ved jeg ikke om det er gyldigt at svare med kun en header:

HTTP/1.1 202 Method accepted

eller der skal mere med som f.eks. dette eksempel:

HTTP/1.1 202 Method accepted
Date: Mon Apr 27 12:21:53 CEST 2009
Content-Type: text/html

<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 TRANSITIONAL//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>202 Method accepted</TITLE>
</HEAD>
<BODY>
<H1>Status: Method accepted</H1>
<P>The method is accepted</P>
</BODY>
</HTML>


I det sidste eksempel har jeg taget flere headere med - skal der bruges flere?
Avatar billede arne_v Ekspert
27. april 2009 - 15:12 #1
Hvad der er optional og hvad der er mandatory afhaenger saa vidt jeg ved af om det er HTTP 1.0 eller 1.1.

Men i begge tilfaelde boer det fremgaa af RFC'en om en header er optional eller mandatory.

http://www.ietf.org/rfc/rfc1945.txt
http://www.ietf.org/rfc/rfc2616.txt
Avatar billede odsgaard Praktikant
28. april 2009 - 13:24 #2
Jeg har været igennem RFC'en - dog ikke med lup :) - og har ikke umiddelbart fundet nogle headere, der er obligatoriske, så ud fra det, så skulle min løsning jo overholde protokollen.

Skulle der være en, der kan se, at der er fejl i det jeg har lavet, så vil jeg meget gerne have en tilbagemelding.

Hilsen
Brian
Avatar billede arne_v Ekspert
11. maj 2009 - 04:33 #3
Der står f.eks.:

A client MUST include a Host header field in all HTTP/1.1 request
  messages

hvilket dækker over at requests med HTTP 1.1 som protokol skal inkludere en Host header. Hvilket er klassisk.

Jeg kan ikke umiddelbart huske nogen for response, men lidt søgning finder:

If no response body is included, the
  response MUST include a Content-Length field with a field-value of
  "0".

...

10.3.5 304 Not Modified

  If the client has performed a conditional GET request and access is
  allowed, but the document has not been modified, the server SHOULD
  respond with this status code. The 304 response MUST NOT contain a
  message-body, and thus is always terminated by the first empty line
  after the header fields.

  The response MUST include the following header fields:

      - Date, unless its omission is required by section 14.18.1

  If a clockless origin server obeys these rules, and proxies and
  clients add their own Date to any response received without one (as
  already specified by [RFC 2068], section 14.19), caches will operate
  correctly.

      - ETag and/or Content-Location, if the header would have been sent
        in a 200 response to the same request

      - Expires, Cache-Control, and/or Vary, if the field-value might
        differ from that sent in any previous response for the same
        variant

...

10.4.2 401 Unauthorized

  The request requires user authentication. The response MUST include a
  WWW-Authenticate header field (section 14.47) containing a challenge
  applicable to the requested resource.

...

10.4.6 405 Method Not Allowed

  The method specified in the Request-Line is not allowed for the
  resource identified by the Request-URI. The response MUST include an
  Allow header containing a list of valid methods for the requested
  resource.

...

  HTTP/1.1 defines the "close" connection option for the sender to
  signal that the connection will be closed after completion of the
  response. For example,

      Connection: close

  in either the request or the response header fields indicates that
  the connection SHOULD NOT be considered `persistent' (section 8.1)
  after the current request/response is complete.

  HTTP/1.1 applications that do not support persistent connections MUST
  include the "close" connection option in every message.

...

  If the content-coding of an entity is not "identity", then the
  response MUST include a Content-Encoding entity-header (section
  14.11) that lists the non-identity content-coding(s) used.

...

  Origin servers MUST include a Date header field in all responses,
  except in these cases:

      1. If the response status code is 100 (Continue) or 101 (Switching
        Protocols), the response MAY include a Date header field, at
        the server's option.

      2. If the response status code conveys a server error, e.g. 500
        (Internal Server Error) or 503 (Service Unavailable), and it is
        inconvenient or impossible to generate a valid Date.

      3. If the server does not have a clock that can provide a
        reasonable approximation of the current time, its responses
        MUST NOT include a Date header field. In this case, the rules
        in section 14.18.1 MUST be followed.

så lidt regler er der !

Connection close er nok den mest kritiske.

Hvis du snakker HTTP 1.0 er det lidt simplere.
Avatar billede arne_v Ekspert
05. juli 2009 - 18:35 #4
all set ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester