ОТРЕДАКТИРОВАНО для ясности:
Использование python/Flask REST-API для предоставления безопасных конечных точек (с использованием базовой аутентификации) для приложения ExtJS. КОРС включен. Все прекрасно работало во всех моих тестах с 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 в надежде, что это сработает, но, похоже, это ничего не изменило.
API размещается через Apache с использованием mod_wsgi, и вся аутентификация передается приложению wsgi с использованием директивы WSGIPassAuthorization On
.
Излишне говорить, что я немного смущен. Разве я не должен всегда получать диалоговое окно входа в систему, если была обнаружена ошибка 401?