2016-12-20 61 views
2

我正在使用Falcon CORS以允許僅從多個域訪問我的Web服務。但它不能正常工作。讓我解釋。Falcon CORS中間件無法正常工作

看看我的實現:

ALLOWED_ORIGINS = ['*'] 
crossdomain_origin = CORS(allow_origins_list=[ALLOWED_ORIGINS], log_level='DEBUG') 

app = falcon.API(middleware=[RequireJSON(), JSONTranslator(), cors.middleware]) 

所以,當我做任何POST請求我的API服務,我得到記錄警告: Aborting response due to origin not allowed。但是,然後我從我的API獲得正確的迴應。

下面是關於這個模塊的官方文檔:https://github.com/lwcolton/falcon-cors

回答

1

您的代碼不匹配獵鷹-CORS文檔的例子:

import falcon 
from falcon_cors import CORS  
cors = CORS(allow_origins_list=['http://test.com:8080'])  
api = falcon.API(middleware=[cors.middleware]) 
#       ^^^^^^^^^^^^^^^ 

注意cors.middleware變量被傳遞到API調用。在您的代碼中,您正在創建crossdomain_origin,但不會將其傳遞到API設置中。

如果這樣不能解決問題,請提供一個工作代碼示例,包括易於測試和重現的Falcon資源類,我很樂意嘗試提供幫助。

編輯:

從下面的評論,這聽起來像獵鷹-CORS是否正常工作,而該問題可能是正在從請求省略origin報頭。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

起源報頭指示的跨站接入請求或預檢請求的來源。

+0

對不起,這是我的錯,我做crossdomain_origin作爲CORS的進口,因此多數民衆贊成錯誤只在代碼示例,但不是在我的項目 –

+0

OK請張貼再現這一問題的小例子,有沒有其他辦法別人幫助更多。 –

+0

https://codeshare.io/ad1BMG –