2013-07-06 1 views
0

J'apprends à écrire des modules Apache pour un projet sur lequel je travaille. J'ai trouvé le official guide, qui s'avère être très informatif.Y a-t-il plus que GET ou POST pour HTTP?

Sur la première page, "Developing modules for the Apache HTTP Server 2.4", la section "Construire un gestionnaire", sous-section "La structure request_rec" fournit quelques exemples de code:

static int example_handler(request_rec *r) 
{ 
    /* Set the appropriate content type */ 
    ap_set_content_type(r, "text/html"); 

    /* Print out the IP address of the client connecting to us: */ 
    ap_rprintf(r, "<h2>Hello, %s!</h2>", r->useragent_ip); 

    /* If we were reached through a GET or a POST request, be happy, else sad. */ 
    if (!strcmp(r->method, "POST") || !strcmp(r->method, "GET")) { 
     ap_rputs("You used a GET or a POST method, that makes us happy!<br/>", r); 
    } 
    else { 
     ap_rputs("You did not use POST or GET, that makes us sad :(<br/>", r); 
    } 

    /* Lastly, if there was a query string, let's print that too! */ 
    if (r->args) { 
     ap_rprintf(r, "Your query string was: %s", r->args); 
    } 
    return OK; 
} 

Quelque chose qui a attiré mon attention était le strcmp sur r->method à voir si c'est POST, GET, ou quelque chose d'autre. C'est bizarre. Je pensais que les seules méthodes HTTP étaient GET et POST? Y a-t-il quelque chose d'autre, ou seulement les développeurs (ou les documenteurs) qui font preuve de prudence?

+0

http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods – Blender

Répondre

1

L'ensemble de méthodes communes est définie est RFC2616.

  • OPTIONS
  • GET
  • TÊTE
  • POST
  • PUT
  • SUPPRIMER
  • TRACE
  • CONNECT

Mais il existe de nombreuses méthodes supplémentaires utilisées par d'autres protocoles. Par exemple, le WEBDAV protocol définit tous ces:

  • PROPFIND
  • PROPPATCH
  • MKCOL
  • COPIE
  • DEPLACER
  • BLOCAGE
  • UNLOCK

Il y a un draft RFC avec une liste de toutes les méthodes d'extension connues. Mais à l'avenir, il est prévu que de nouvelles méthodes seront enregistrées avec l'IANA dans le registre de la méthode HTTP comme décrit here.

1

Oui, il y a.

OPTIONS Request options of a Web page 
GET  Request to read a Web page 
HEAD Request to read a Web page 
PUT  Request to write a Web page 
POST Append to a named resource (e.g. a Web page) 
DELETE Remove the Web page 
LINK Connects two existing resources 
UNLINK Breaks an existing connection between two resources 

Pour une vérification de référence complète la HTTP Specification (RFC2616, Chapter 5.1.1)

+0

Etes-vous en train de me dire que je peux supprimer une page web au hasard en utilisant HTTP? –

+0

@ColeJohnson Tout comme vous ne pouvez pas POST à ​​une URL aléatoire, vous ne pouvez pas supprimer une URL aléatoire. Mais un serveur pourrait supporter cette méthode sur certaines ressources s'il le choisissait aussi. Typiquement, cela nécessiterait une autorisation quelconque. –

+0

@ColeJohnson ces verbes sont principalement utilisés pour les applications REST. Là, vous pouvez supprimer un objet bien identifié du serveur (en supposant que vous avez le droit de le faire). – Camouflage