基本身份验证问题

时间:2015-05-11 21:21:26

标签: extjs http-basic-authentication preflight flask-cors

为清晰起见,已编辑:

使用python / Flask 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代码中,希望它可以正常工作,但它似乎没有任何区别。

使用mod_wsgi通过Apache托管API,并使用WSGIPassAuthorization On指令将所有身份验证传递给wsgi应用程序。

毋庸置疑,我有点困惑。如果检测到401错误,我是不是总是得到登录对话框?

1 个答案:

答案 0 :(得分:0)

我最终只是将我的ExtJS和API应用程序移动到同一台服务器上(对于ExtJS应用程序使用Apache mod_alias,对于Flask应用程序使用mod_wsgi的WSGIScriptAlias指令)。像魅力一样工作,没有CORS问题。尽管Chrome有一个糟糕的解决方案,但我认为没有针对Firefox的解决方案,我甚至不看IE。我当然有更好的事情要做。