Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
La misma solicitud Http funciona en un host pero no en el otro

Tengo el siguiente código:

 function posturl($URL, $post_data, $referrer = "") { $URL_Info = parse_url ( $URL ); // Building referrer if ($referrer == "") $referrer = $_SERVER["SCRIPT_URI"]; // making string from $data foreach ( $post_data as $key => $value ) $values [] = "$key=" . urlencode ( $value ); $data_string = implode ( "&", $values ); if (! isset ( $URL_Info ["port"] )) $URL_Info ["port"] = 80; $request .= "POST " . $URL_Info ["path"] . " HTTP/1.1\n"; $request .= "Host: " . $URL_Info ["host"] . "\n"; $request .= "Referer: $referrer\n"; $request .= "Content-type: application/x-www-form-urlencoded\n"; $request .= "Content-length: " . strlen ( $data_string ) . "\n"; $request .= "Connection: close\n"; $request .= "\n"; $request .= $data_string . "\n"; echo ">>>> Request:\n"; echo($request); var_dump($URL_Info); $fp = fsockopen ( $URL_Info ["host"], $URL_Info ["port"] ); fputs ( $fp, $request ); while ( ! feof ( $fp ) ) { $result .= fgets ( $fp, 128 ); } fclose ( $fp ); $result=substr($result, strpos($result, "\r\n\r\n")); return $result; }

Y la siguiente solicitud:

 POST /fia/interface/product_use_action.php HTTP/1.1 Host: orlof.is Referer: Content-type: application/x-www-form-urlencoded Content-length: 111 Connection: close task=check&ticket_number=EDDAFIA073&secret_code=htl440&seller_number=104&ternimal_number=Edda&global_language=8

Recibo la siguiente respuesta:

https://pastebin.com/5sf4fUiY

Mi pregunta:

¿Hay algo mal con la solicitud?

También tengo el mismo código y la misma solicitud pero Host diferente, y no recibo errores allí.

 POST /fia/interface/product_use_action.php HTTP/1.1 Host: test.orlof.is Referer: Content-type: application/x-www-form-urlencoded Content-length: 111 Connection: close task=check&ticket_number=EDDAFIA073&secret_code=htl440&seller_number=104&ternimal_number=Edda&global_language=8

Como podemos ver, la única diferencia es test.orlof.is en lugar de orlof.is .

Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No estoy seguro de si este es realmente el problema, pero hay dos cosas obviamente incorrectas con su solicitud:

 $request .= "POST " . $URL_Info ["path"] . " HTTP/1.1\n";

El final de la línea con HTTP debe ser \r\n , no \n . Esto es cierto para todos los finales de línea, incluido el separador entre el encabezado HTTP y el cuerpo.

 $request .= "Content-length: " . strlen ( $data_string ) . "\n"; ... $request .= $data_string . "\n";

Especifica la longitud del cuerpo con strlen ( $data_string ) , pero en realidad envía un byte más. No es necesario enviar un \n al final del cuerpo, pero cuando lo haga, también debe tenerlo en cuenta en el encabezado content-length .

Aparte de eso, está realizando una solicitud HTTP/1.1, pero espera que simplemente pueda tratar el cuerpo de la respuesta HTTP como los datos finales. Pero, con HTTP/1.1, el servidor solo puede usar la codificación de transferencia en fragmentos, es decir, la respuesta será en fragmentos y cada fragmento tendrá un prefijo de tamaño. Si no quiere lidiar con esto, mejor use HTTP/1.0.

En cuanto a por qué funciona con un servidor y no con el otro: podría deberse a que un servidor podría tener una implementación más indulgente del estándar HTTP y el otro más estricto. En cualquier caso, la fuente definitiva sobre cómo usar HTTP es el estándar y no algunos ejemplos que haya visto en alguna parte.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda