Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

303
Visualizações
¿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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda