Ошибка URLSessionWebSocketTask с недопустимым ответом для конкретной службы

В настоящее время я пытаюсь установить соединение через веб-сокет с экземпляром Paperless-ngx в iOS, используя URLSessions webSocketTask, используя следующий код:

      let wsTask = URLSession.shared.webSocketTask(with: URL(string: "wss://demo.paperparrot.me/ws/status/")!)
wsTask.resume()

Это не удается со следующим:

      Task <402E47F3-1EE4-4FE3-A36B-2BA7F6DAB26A>.<14> finished with error [-1011] Error Domain=NSURLErrorDomain Code=-1011 "Invalid server response." UserInfo={NSErrorFailingURLStringKey=https://demo.paperparrot.me/ws/status/, NSErrorFailingURLKey=https://demo.paperparrot.me/ws/status/, _NSURLErrorWebSocketHandshakeFailureReasonKey=0, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalWebSocketTask <402E47F3-1EE4-4FE3-A36B-2BA7F6DAB26A>.<14>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <402E47F3-1EE4-4FE3-A36B-2BA7F6DAB26A>.<14>, NSLocalizedDescription=Invalid server response.}

Любопытно то, что с помощью того же кода я могу подключаться к другим веб-сокетам. Веб-сокеты для wss://demo.paperparrot.me также работают в моем браузере или с помощью любого инструмента для веб-сокетов.

NGINX регистрирует только следующее для запроса с примером iOS:

      GET /ws/status/ HTTP/1.1" 403 0

Во время работы соединения регистрируются как

      GET / HTTP/1.1" 500 21
GET /ws/status/ HTTP/1.1" 101 2

Я что-то упустил здесь?

1 ответ

Сообщение об ошибке указывает на то, что сервер возвращает недопустимый ответ, что приводит к сбою рукопожатия WebSocket. Сервер возвращает ответ об ошибке 403, что означает, что запрос запрещен. Это может быть вызвано рядом причин, таких как проблемы с проверкой подлинности или проблемы с контролем доступа.

Возможно, сервер настроен на блокировку запросов от определенных пользовательских агентов или типов клиентов. Также возможно, что сервер ожидает наличия в запросе определенного заголовка или параметра, который не отправляется вашим кодом.

Другие вопросы по тегам