我使用套接字和一个侦听特定端口的TCPListener在C#中编写了一个代理。目前,侦听器从客户端浏览器获取“GET”请求,然后使用Socket.Send()类代表客户端转发请求。使用Socket.Reveive()类接收响应,然后再次使用Socket.Send()转发到客户端。
当客户端请求基本的html网站时,这很有用。但是,当客户端请求包含某些javascript(例如<body onload='doThis();'
)的网站时,它无法运行javascript。
在此特定方案中,javasript函数执行重定向。我是否需要更改套接字设置中的某些内容以允许javascript在发送到客户端时运行?
答案 0 :(得分:0)
很难说没有更多的信息。
在html文件中实现了javascript函数“doThis()”,还是来自includes .js文件? 如果它来自包含的.js文件,请确保将“text / javascript”作为内容类型发送到标头中,否则某些浏览器将无法运行js。
JavaScript是否真的没有执行,或者只是前进不起作用?用<body onload='alert('test');'
试了一下?它会执行吗?
如果是:您的重定向JS究竟是什么样的?
如果没有:“Socket.Send()
”之后你做了什么?你以任何方式给客户一个标志,页面准备好了吗?有些浏览器不会执行onLoad,直到该页面被认为是完整的。在将文件发送到客户端后,您是否尝试显式关闭连接?
答案 1 :(得分:0)
问题解决了。客户端PC上存在问题。重新启动它,再试一次它就像炸弹一样。