Https-вызов из приложения в WSL2 в приложение в Windows 10
Я работаю над двумя веб-приложениями (далее App1 и App2), и оба работают на моем ПК с Windows 10. Я пытаюсь сделать https вызов из бэкенда App2 и бэкенда App1.
App1 - это приложение, написанное на ASP.NET и работающее непосредственно на Windows 10. Это приложение доступно через браузер по адресу https://localhost:44311/
App2 написано на Django и работает в Ubuntu-20.04 через WSL2 на том же компьютере с Windows. Это приложение можно найти через браузер по адресу http://localhost:8000/
Инициальный тест
В App1 я выставляю тестовую функцию под названием GetMyResponse
:
[HttpGet]
[AllowAnonymous]
[Route("GetMyResponse")]
public IActionResult GetMyResponse() {
return Ok("Hello World!");
}
Я попытался подключиться к https://localhost:44311/GetMyResponse/ через веб-браузер, и, похоже, все работает правильно.
Попытка 1
Я пытаюсь сделать https вызов из бэкенда App2 в бэкенд App1 следующим образом:
import requests
class App1APIView(APIView):
def get(self, request, *args, **kwargs):
response = requests.get("https://localhost:44311/GetMyResponse/", verify=False)
return Response(response.content)
Это дает мне следующую ошибку (я пытался отключить брандмауэр windows, но ничего не изменилось):
Traceback (most recent call last):
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/rest_framework/views.py", line 505, in dispatch
response = self.handle_exception(exc)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/rest_framework/views.py", line 465, in handle_exception
self.raise_uncaught_exception(exc)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
raise exc
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/rest_framework/views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
File "/mnt/d/Projects/app2/evar/sizing/api/views.py", line 74, in get
response = requests.get("https://localhost:44311/GetMyResponse/", verify=False)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/mnt/d/Projects/app2/venv/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='localhost', port=44311): Max retries exceeded with url: /GetMyResponse/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f20694e8490>: Failed to establish a new connection: [Errno 111] Connection refused'))
Попытка 2
Я пытался следовать этому решению: Доступ к localhost, запущенному в Windows, изнутри WSL2?
import requests
class App1APIView(APIView):
def get(self, request, *args, **kwargs):
response = requests.get("https://winhost:44311/GetMyResponse/", verify=False)
return Response(response.content)
Во время выполнения я не нахожу никаких ошибок, но ответ следующий:
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<HTML><HEAD><TITLE>Bad Request</TITLE>\r\n<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\"></HEAD>\r\n<BODY><h2>Bad Request - Invalid Hostname</h2>\r\n<hr><p>HTTP Error 400. The request hostname is invalid.</p>\r\n</BODY></HTML>\r\n"