基本身份验证问题
Issue with basic auth
为清晰起见已编辑:
使用 python/Flask REST-API 为 ExtJS 应用程序提供安全端点(使用基本身份验证)。 CORS 已启用。在我使用 Safari 进行的所有测试中,所有这些都表现出色。决定测试其他浏览器(IE、Chrome 和 Firefox),结果我不断收到 401 错误并且没有登录对话框。
我发现以下博客 post http://mortoray.com/2014/04/09/allowing-unlimited-access-with-cors/ 建议添加以下代码块以确保涵盖所有端点的所有 headers:
@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 使用 mod_wsgi 通过 Apache 托管,所有身份验证都使用 WSGIPassAuthorization On
指令传递给 wsgi 应用程序。
不用说,我有点困惑。如果检测到 401 错误,我不应该总是看到登录对话框吗?
我最终只是将我的 ExtJS 和 API 应用程序移动到同一台服务器(对 ExtJS 应用程序使用 Apache mod_alias,对 Flask 应用程序使用 mod_wsgi 的 WSGIScriptAlias 指令) .工作起来很有魅力,没有 CORS 问题。尽管 Chrome 的解决方案很糟糕,但我认为 Firefox 没有解决方案,我什至没有研究 IE。我当然有更好的事情要做。
为清晰起见已编辑:
使用 python/Flask REST-API 为 ExtJS 应用程序提供安全端点(使用基本身份验证)。 CORS 已启用。在我使用 Safari 进行的所有测试中,所有这些都表现出色。决定测试其他浏览器(IE、Chrome 和 Firefox),结果我不断收到 401 错误并且没有登录对话框。
我发现以下博客 post http://mortoray.com/2014/04/09/allowing-unlimited-access-with-cors/ 建议添加以下代码块以确保涵盖所有端点的所有 headers:
@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 使用 mod_wsgi 通过 Apache 托管,所有身份验证都使用 WSGIPassAuthorization On
指令传递给 wsgi 应用程序。
不用说,我有点困惑。如果检测到 401 错误,我不应该总是看到登录对话框吗?
我最终只是将我的 ExtJS 和 API 应用程序移动到同一台服务器(对 ExtJS 应用程序使用 Apache mod_alias,对 Flask 应用程序使用 mod_wsgi 的 WSGIScriptAlias 指令) .工作起来很有魅力,没有 CORS 问题。尽管 Chrome 的解决方案很糟糕,但我认为 Firefox 没有解决方案,我什至没有研究 IE。我当然有更好的事情要做。