Ошибка 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, что означает, что запрос запрещен. Это может быть вызвано рядом причин, таких как проблемы с проверкой подлинности или проблемы с контролем доступа.
Возможно, сервер настроен на блокировку запросов от определенных пользовательских агентов или типов клиентов. Также возможно, что сервер ожидает наличия в запросе определенного заголовка или параметра, который не отправляется вашим кодом.