2010-07-22 5 views
0

J'ai écrit un proxy en C# en utilisant des sockets et un TCPListener en écoutant un port particulier. Actuellement, l'écouteur reçoit la requête "GET" du navigateur des clients, puis utilise la classe Socket.Send() pour transmettre la demande au nom du client. La réponse est reçue à l'aide de la classe Socket.Reveive() et transmise ensuite sur le client à l'aide de Socket.Send() une fois de plus.C# Proxy utilisant des sockets envoyant javascript au client

Cela fonctionne très bien lorsque le client demande un site Web html basique. Toutefois, lorsque le client demande un site Web qui contient du javascript tel que <body onload='doThis();', il ne parvient pas à exécuter le javascript.

Dans ce scénario spécifique, la fonction javasript effectue une redirection. Dois-je modifier quelque chose dans les paramètres de socket pour permettre au javascript de s'exécuter lorsqu'il est envoyé au client?

Répondre

0

Problème résolu. Il y avait un problème sur le PC client. Redémarré, essayé encore et cela a fonctionné comme une bombe.

0

Difficile à dire sans beaucoup plus d'informations.

La fonction javascript "doThis()" est-elle implémentée dans le fichier html ou provient-elle d'un fichier .js inclus? Si elle provient d'un fichier .js inclus, assurez-vous que "text/javascript" est envoyé comme type de contenu dans l'en-tête, sinon certains navigateurs n'exécuteront pas le js.

Est-ce que le JavaScript n'est pas vraiment exécuté ou est-ce que l'avant ne fonctionne pas? Je l'ai essayé avec <body onload='alert('test');'? Est-ce qu'il s'exécute?

Si oui: À quoi ressemble exactement votre JS de redirection?

Si non: Que faites-vous après "Socket.Send()"? Est-ce que vous donnez un signe au client, que la page est prête? Certains navigateurs n'exécuteront pas onLoad, jusqu'à ce que la page soit complète. Avez-vous essayé de fermer explicitement la connexion après l'envoi du fichier au client?

Questions connexes