2016-10-10 44 views
1

我有一個API寫在Flask,當我試圖從AngularJS使用這個API我得到401錯誤未經授權的,具有相同憑據的相同請求工作正常從郵差或HTTPie。這發生在GET或POST請求中。Flask API阻止選項請求

我注意到HTTPie和Angular請求之間的區別在於Angular在GET請求之前調用OPTIONS。

這是需要驗證我的Python代碼(API是一個藍圖):

@api.before_request 
@rate_limit(limit=5, period=15) 
@auth_token.login_required 
def before_request(): 
    """All routes in this blueprint require authentication.""" 
    pass 

是從我的API工作的唯一方法是一個是這個藍圖之外,我的結論是, @ api.before_request和@ auth_token.login_required正期待爲OPTIONS請求發送憑據,任何想法我該怎麼辦?

非常感謝您

+0

您確定這不是CORS問題? – pvg

+0

我認爲不是,我有CORS插件運行。 Chrome顯示此錯誤「XMLHttpRequest無法加載http:// localhost:5000/api/v1/audios /。預檢的響應具有無效的HTTP狀態代碼401」。如果我從before_request中刪除@ auth_token.login_required,我可以獲取數據(但不要求登錄) – Matias

回答

0

我想不通的問題,我更新插件燒瓶HTTPAuth後解決。

我的版本是2.2.1,在轉移到3.2.1之後解決了。

在Amazon EC2的一個實例上試了一樣,並用相同的解決方案解決,所以我很肯定這是這樣的。