Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!