Проблема, с которой мы сталкиваемся, заключается в следующем: при использовании Safari в качестве браузера, а не Chrome, мы получаем статус 401 при вызове get api. Мы используем такие технологии, как React и Django Rest Framework. В React мы также используем аксиомы. Опять же, все в порядке, когда мы используем Chrome в качестве нашего браузера (ошибка 401 не выдается, и аутентификация, похоже, в порядке), но когда мы переключаемся на Safari, это не работает. Мы также должны отметить, что при тестировании с Postman, если мы сохраняем токен в нашем заголовке аутентификации, статус 401 не предоставляется (он работает).
Чтобы попытаться решить эту проблему, мы попробовали разные типы классов аутентификации в нашем бэкэнде Django и убедились, что CORS был в наших настройках. Мы также обеспечили соблюдение жизненного цикла компонента React для правильного монтажа и включили соответствующую информацию, необходимую для каждого вызова API. Мы считаем, что это проблема на стороне клиента.
Пожалуйста, посмотрите изображение ниже для краткого описания сетевых запросов / ответов, которые мы видим, и нашего вызова API.
401 - неавторизованный. Как вы сказали if we store a token in our authentication header no 401 status is given (it works). Может это намек?





Итак, оказывается, что корень нашей проблемы заключался в том, что мы не закончили один из наших URL-адресов api косой чертой, в результате чего получилось 301, а затем 304. Chrome смог выполнить автокоррекцию без проблем, но Safari, IE и firefox не могут .
Та же проблема, но я получал код состояния 401 вместо 301/304. Не могу поверить! Safari и iPhone только радуют :(
Это спасет мою жизнь! Я просто не могу понять, почему он возвращал 401 на iOS, когда везде работал! Я думал, что это что-то из-за того, что iOS не хранит файлы cookie или что-то в этом роде. Конечный результат, я добавляю косую черту в конце всех URL-адресов, у которых его еще не было. Теперь все работает. Моя настройка такая же: DRF + React, аутентификация через JWT.
Вау, это было очень полезно. Я не заметил, что хром делает тяжелую работу. Вот почему это не удалось на сафари. Для меня это URL-адрес для извлечения записей: https://forexample.com/users?is_myfriend=true, и, основываясь на вашем ответе, когда я добавил завершающую косую черту, например .../users/?..., тогда он работал нормально. Спасибо.
Без каких-либо фактических деталей (код, который показывает обработку вашего маршрута, конфигурацию django, сведения об ошибках консоли браузера, сведения о вкладке сети и т. д.), Я просто предполагаю, что вы отклоняете все, что делает предварительная проверка Safari, поэтому проверьте, что консоль браузера и Вкладки сети говорят, и обновите свой пост с некоторой дополнительной информацией.