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

301
Views
¿Por qué mi socket Javascript se conecta a un servidor web pero no a localhost?

Estoy creando un complemento para Adobe FrameMaker usando ExtendScript (que es básicamente Javascript con un montón de objetos y métodos específicos de FM). Como no hay un navegador, no puedo usar ninguna de las bibliotecas basadas en la web para conectarme a un servidor. He estado usando un Socket y funciona bien cuando me conecto a uno de mis dominios alojados. Para fines de prueba y demostración, ahora quiero conectarme a mi localhost, que tiene el paquete XAMPP ejecutándose en él.

La conexión al host local desde un navegador web funciona bien, por lo que sé que la página que estoy solicitando existe y que Apache local está funcionando. Pero cuando solicito la misma página de mi secuencia de comandos, aparece un error de solicitud incorrecta. Al revisar el registro de acceso de Apache, encuentro que la línea enviada al socket se malinterpreta: el primer \r\n después del protocolo aparece como \n después de la cadena HTTP/1.1. Aquí hay dos líneas del registro de acceso de Apache, la primera para una solicitud de mi navegador web local, la segunda del socket:

 ::1 - - [23/Sep/2021:09:19:32 +0100] "GET /index.html HTTP/1.1" 304 - "-" "Mozilla [etc]" ::1 - - [23/Sep/2021:09:20:51 +0100] "GET /index.html HTTP/1.1\n" 400 331 "-" "-"

El javascript que estoy usando para conectarme a un servidor está aquí:

 var sHost = 'localhost'; var oSocket = new Socket; oSocket.open( sHost + ':80', 'UTF-8' ); oSocket.write ( 'GET /index.html HTTP/1.1\r\nHost:' + sHost + '\r\n\r\n' ); var sReply = oSocket.read( ); alert( sReply );

Ejecutar este código da una respuesta de 400 Bad Request. Cuando cambio el host a uno de mis dominios web sin más cambios, obtengo el código de respuesta 200 más la página solicitada. Por supuesto, poner 'localhost/index.html' en mi navegador da la página sin ningún problema.

Esto podría ser un problema de configuración de acceso de Apache, pero no puedo averiguar dónde podría estar el problema. Tengo una instalación nueva de XAMPP y no cambié nada a la configuración predeterminada. Parece que hay algo en el manejo de las solicitudes entrantes que se maneja de manera diferente entre el navegador y el socket, lo que hace que \n permanezca adjunto al identificador de protocolo y eso, por supuesto, descarta el servidor Apache http. Pero, ¿cómo hago para que la cadena de protocolo se analice correctamente? ¿Y por qué necesito pasar por esos aros en el navegador cuando sigo el protocolo y funciona para un servidor en Internet?

Gracias por los consejos que me ayudan a resolver esto y poder alojar páginas (y una base de datos MySQL localmente en lugar de tener que ponerlas en algún servidor en Internet). usarlos en mi aplicación. El objeto Socket es la única herramienta que tengo disponible.

about 4 years ago · Juan Pablo Isaza
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!