tornado 做了一个 Web 程序。使用 IE 访问没有任何问题,使用 chrome 访问其中一个页面会出现下面这个错误
无法访问此网站
连接已重置。 请试试以下办法: 重新加载网页 检查网络连接 检查代理服务器和防火墙 ERR_CONNECTION_RESET
1 、在 chrome 下在这个页面出现错误时,同时用 ie 打开当前页面是可以的,没有任何问题
2 、如果此网页翻墙,仍然没问题,打开正常
3 、我直接输入的 IP ,当前 ip 没有被墙
我访问的这个页面是使用 tornado 做的一个反向代理。
代码大概如下:
def fetch_request(url, callback, **kwargs):
tornado.httpclient.AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
req = tornado.httpclient.HTTPRequest(url, **kwargs)
client = tornado.httpclient.AsyncHTTPClient()
client.fetch(req, callback)
class ProxyHandler(BaseHandler):
@tornado.web.asynchronous
def get(self, url):
def handle_response(response):
if (response.error and not
isinstance(response.error, tornado.httpclient.HTTPError)):
self.set_status(500)
self.write('Internal server error:\n' + str(response.error))
else:
self.set_status(response.code, response.reason)
self._headers = tornado.httputil.HTTPHeaders() # clear tornado default header
for header, v in response.headers.get_all():
if header not in ('Content-Length', 'Transfer-Encoding', 'Content-Encoding', 'Connection'):
self.add_header(header, v) # some header appear multiple times, eg 'Set-Cookie'
body = response.body
if body:
# self.set_header('Content-Length', len(body))
self.write(body)
self.finish()
try:
uri = self.request.uri
url = uri.replace("/proxy/", "")
# headers=self.request.headers,
fetch_request(
url, handle_response,
method=self.request.method, follow_redirects=False,
allow_nonstandard_methods=True)
except tornado.httpclient.HTTPError as e:
if hasattr(e, 'response') and e.response:
handle_response(e.response)
else:
self.set_status(500)
self.write('Internal server error:\n' + str(e))
self.finish()
1
sbmzhcn OP 初步判断是 https 的关系,仍需排查。。。
|
2
HFcbyqP0iVO5KM05 2016-08-04 00:46:15 +08:00 via Android
你是不是在做本地调试并且 chrome 开启了代理?
|