aio-libs / aio-libs/aiohttp

Response not passed to WSServerHandshakeError

未关闭
#2,279 9 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
enhancement need pull request
主要语言
Python
星标
16.5k
派生
2.4k
平均合并
17 小时 22 分钟
30 天内合并 PR
212

描述

## Long story short

As requested in [comment on issue 701](https://github.com/aio-libs/aiohttp/issues/701#issuecomment-330762574) opening a new issue

WSServerHandshakeError does not provide the actual HTTP Response body.
This means any error handling code, logging code cannot provide the error information that the server provides in the response body with the normal Client object.

In order to work around this issue we use a client like this to get access to the response:
```python
class LoggingClientSession(aiohttp.ClientSession):
@asyncio.coroutine
def _request(self, method, url, **kwargs):
self.last_response = yield from super()._request(method, url, **kwargs)
return self.last_response
```

## Expected behaviour

Provide the complete response object as a property in the error. This way any change to the interface of the standard response is propagated directly without additional code changes.

## Actual behaviour

WSServerHandshakeError only forwards a subset of the response. See this code: https://github.com/aio-libs/aiohttp/blob/master/aiohttp/client.py#L434

## Steps to reproduce

Connect to a websocket server that responds to an upgrade request with an error response with body.

## Your environment
not relevant.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。