отредактированной для ясности:Проблемы с базовой AUTH
Использования Python/КОЛБА REST-API, чтобы обеспечить безопасные конечные точки (с использованием базовой аутентификации) для приложения ExtJS. CORS включен. Все отлично работали во всех моих тестах с Safari. Решил проверить другие браузеры (IE, Chrome и Firefox) с результатом, который я продолжаю получать с ошибкой 401 и без диалогового окна входа.
Я нашел следующее сообщение в блоге http://mortoray.com/2014/04/09/allowing-unlimited-access-with-cors/, что предложил добавить следующий фрагмент кода, чтобы гарантировать, что все заголовки были покрыты для всех конечных точек:
@app.after_request
def add_cors(resp):
""" Ensure all responses have the CORS headers. This ensures any failures are also accessible
by the client. """
resp.headers['Access-Control-Allow-Origin'] = request.headers.get('Origin','*')
resp.headers['Access-Control-Allow-Credentials'] = 'true'
resp.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS, GET'
resp.headers['Access-Control-Allow-Headers'] = request.headers.get(
'Access-Control-Request-Headers', 'Authorization')
# set low for debugging
if app.debug:
resp.headers['Access-Control-Max-Age'] = '1'
return resp
Я добавил это к моему апи кода в надежде, что она будет работать , но, похоже, это не имеет никакого значения.
API размещен через Apache с использованием mod_wsgi, и вся аутентификация передается в приложение wsgi с использованием директивы WSGIPassAuthorization On
.
Излишне говорить, что я немного смущен. Должен ли я всегда получать диалоговое окно входа в систему, если была обнаружена ошибка 401?
Для Firefox я попытался установить настройки NTLM, но это ничего не делало, что ожидается, поскольку мы запускаем веб-службу Apache. –
Эй, там! Я знаю, что базовый auth работает напрямую через API (python/flask) во всех браузерах, поэтому он определенно связан с Ajax. В последнее время у меня не было много времени, чтобы заглянуть в нее. –
У меня есть аналогичная проблема (с использованием JQuery, а не ExtJS.) Я пробовал один и тот же запрос как с одинаковым, так и с перекрестным происхождением и сравнивал отправленные заголовки запроса. Они одинаковы, за исключением того, что у того же происхождения есть «Origin», но перекрестное происхождение имеет «X-Requested-With». (Не уверен, что виноват Ajax или браузер). – Bampfer