我使用aiohttp这样发送请求:
async with ClientSession() as session:
res = await session.get("http://0.0.0.0:8000/./")
[当我像这样使用python启动http服务器时:
python3 -m http.server
我看到路径已规范化,即服务器收到以下请求:GET / HTTP/1.1" 200
我如何禁用此规范化,以强制执行类似urrlib的行为,例如urllib.request.urlopen("http://0.0.0.0:8000/./")
导致以下请求:GET /./ HTTP/1.1
。
[aiohttp
使用yarl进行URL处理。
[
session.get('http://example.com')
和session.get(yarl.URL('http://example.com'))
]一样好>您可以使用yarl.URL禁用
encoded=True
的URL编码,但必须注意URL的正确性。
例如
import asyncio
import yarl
import aiohttp
async def test():
url = yarl.URL('https://stackoverflow.com/./', encoded=True)
async with aiohttp.ClientSession() as session:
async with session.get(url, allow_redirects=False) as resp:
print(resp.url)
asyncio.run(test())