En Perl , Common Gateway Interface (CGI) no es más que un protocolo que define la interacción de los servidores web con algunos programas ejecutables para producir páginas web dinámicas. Básicamente, muestra cómo el servidor web envía información al programa y el programa envía la información de vuelta al servidor web, que a su vez puede enviarse de vuelta al navegador. GET
y POST
no son intercambiables y ambos tipos son diferentes. Los servidores proxy pueden almacenar en caché el resultado de GET
las requests.GET
El método es el método predeterminado para todas las requests web para pasar la información del navegador al servidor web y también crea una string larga que aparece en el cuadro de URL del navegador. Envía la información de usuario encriptada adjunta a la solicitud de página. La página y la información encriptada están separadas por ? carácter:
Ejemplo:
http://servername.com/cgi-bin/script_name.cgi o.pl?key1=value1&key2=value2…….
Esta información se pasa a través QUERY_STRING
del encabezado y mediante el uso QUERY_STRING
de la variable de entorno se puede acceder fácilmente a ella en su programa CGI. Solo pueden haber 1024 caracteres en una string de solicitud ya que el GET
método tiene una limitación de tamaño. La información se puede pasar simplemente concatenando pares clave-valor junto con cualquier URL.
NOTA: Si está tratando con contraseñas o cualquier otra información confidencial para pasarla al servidor, entonces usar el
GET
método no es una buena opción.
Ejemplo:
<html> <head></head> <body> <b> Search Your Query:</b><br> <FORM action="Gfg_get.pl" method = "GET"> <input type="text" name="q" size="20" maxlength="120"> <input type="submit" value="Search"><br> <input type="radio" name="l" value="Web" checked>Web <input type="radio" name="l" value="India">IND </FORM> </body> </html>
Producción:
Script Perl-CGI para el formulario del método GET anterior:
#!"c:\xampp\perl\bin\perl.exe" $buffer = $ENV{'QUERY_STRING'}; #split information into key/value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9] [a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; $FORM{$name} = $value; } $SearchTerm = $FORM{'q'}; $Location = $FORM{'l'}; print "Content-type:text/html\r\n\r\n"; print "<html>"; print "<head>"; print "<title>GeeksForGeeks - Get Method</title>"; print "</head>"; print "<body>"; print "<h3>Hello You searched '$Location' for '$SearchTerm'<br> Few Matches Found!<br> <br> Match 1<br> Match 2<br> Match 3<br> Match 4<br> etc.....</h3>"; print "</body>"; print "</html>"; 1;
Salida:
como se muestra arriba, en la imagen de salida, la información se transmite junto con la URL:
http://localhost/xampp/cgi-bin/Gfg_get.pl?q=music&l=Web
Por el contrario, el POST
método es el método más fiable para pasar información a un programa CGI. Generalmente, el POST
método se utiliza cuando se requiere cargar la información en el servidor. Con el objetivo de cargar una mayor cantidad de datos, POST
el método se considera más adecuado en lugar del GET
método, ya que ninguno de los datos aparece en el cuadro de URL. De manera similar al GET
método, la información también se empaqueta en esto, pero en lugar de enviarla como una string de texto después de ? en el cuadro URL, lo envía como un mensaje separado al servidor a través de una ruta diferente a la que puede acceder su programa Perl/CGI.
Ejemplo:
<head></head> <body> <b>Please Fill in the Information:</b><br> <form action="GfG_post.pl" method="post"> First Name:<br> <input type="text" name="first_name" size="25" maxlength="100"><br> Last Name:<br> <input type="text" name="last_name" size="25" maxlength="100"><br> <br> Languages:<br> <input type="checkbox" name="python" value="yes">Python <input type="checkbox" name="java" value="yes">Java <input type="checkbox" name="kotlin" value="yes">Kotlin <input type="checkbox" name="perl" value="yes">Perl <input type="checkbox" name="swift" value="yes">Swift <br> Payment: <select name=payment> <option>---Select---</option> <Option value="Paypal"> Paypal </option> <Option value="Internet Banking"> Internet Banking </option> <Option value="Credit Card"> Credict Card </option> <Option value="Paytm"> Paytm </option> </select><br> <br> First Time Customer?<br> <input type="radio" name="first_time" value="Yes">Yes <input type="radio" name="first_time" value="No">No<br> <br> Feedback:<br> <textarea wrap= "virtual" name="feedback" cols="25" rows="3"></textarea><br> <br> <input type="submit" value="Place Order"> </form> </body> </html>
Producción:
Script Perl-CGI para el método POST anterior:
#!"c:\xampp\perl\bin\perl.exe" read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9] [a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; $FORM{$name} = $value; } if($FORM{python}) { $python_flag ="YES"; } else { $python_flag ="NO"; } if($FORM{java}) { $java_flag ="YES"; } else { $java_flag ="NO"; } if($FORM{kotlin}) { $kotlin_flag ="YES"; } else { $kotlin_flag ="NO"; } if($FORM{perl}) { $perl_flag ="YES"; } else { $perl_flag ="NO"; } if($FORM{swift}) { $swift_flag ="YES"; } else { $swift_flag ="NO"; } $first_name= $FORM{'first_name'}; $last_name= $FORM{'last_name'}; $payment_method= $FORM{'payment'}; $first_time= $FORM{'first_time'}; $feed_back= $FORM{'feedback'}; print "Content-type:text/html\r\n\r\n"; print "<html>"; print "<head>"; print "<title>GeeksForGeeks - Post Method</title>"; print "</head>"; print "<body>"; print "<h3>Hello $first_name $last_name</h3>"; print "<h3>Here is your Purchased Order!</h3>"; print "<h3>Python: $python_flag</h3>"; print "<h3>Java: $java_flag</h3>"; print "<h3>Kotlin: $kotlin_flag</h3>"; print "<h3>Perl: $perl_flag</h3>"; print "<h3>Swift: $swift_flag</h3>"; print "<h3>Payment Method: $payment_method</h3>"; print "<h3>First Time Customer: $first_time</h3>"; print "<h3>Feedback: $feed_back</h3>"; print "</body>"; print "</html>"; 1;
Producción:
Como se puede ver en la imagen de arriba, después de usar POST
el método, la información se carga en el servidor sin aparecer en el cuadro de URL. Esto hace que los datos enviados a través de Internet sean más seguros en comparación con el GET
método.
Publicación traducida automáticamente
Artículo escrito por akshatyadav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA