2013-01-22 45 views
1

我試圖讓CORS工作在我trigger.io應用:Trigger.IO CORS設置

我有以下安裝在我的.htaccess

Header set Access-Control-Allow-Headers: "Accept,Origin,Content-Type,X-Requested-With" 
Header set Access-Control-Allow-Methods "GET,PUT,POST,DELETE,OPTIONS" 
Header set Access-Control-Allow-Credentials: "true" 
Header set Access-Control-Allow-Origin "http://localhost:3000,content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c" 

運行觸發應用程序中網絡(localhost:3000)工作正常。

但是當我把它部署到(安卓)設備我看到在調試輸出以下錯誤:

[ERROR] XMLHttpRequest cannot load {link}http://mydevtest.lan/api/auth/currentuser.{/link} Origin content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c is not allowed by Access-Control-Allow-Origin. -- From line 1 of null 

我擔心設置內容://在訪問控制 - 允許 - Origin頭文件不合法。

回答

2

Access-Control-Allow-Origin標題與你擁有它無效。有效值爲'*'或space separated list of origins。下列情況之一的應工作:

Header set Access-Control-Allow-Origin "*" 

Header set Access-Control-Allow-Origin "http://localhost:3000 content://io.trigger.forge99d5a0b8621e11e28cc2123139286d0c" 

請注意,我從來沒有測試的一種形式(有多個起源)。儘管CORS規範允許,但瀏覽器可能還不支持它。

你可以做的另一件事是讀取Origin標題的值,在你的服務器上驗證它(即手動檢查該值是否等於「http:// localhost:3000」或「content:// io .trigger.forge99d5a0b8621e11e28cc2123139286d0c「),然後僅在Access-Control-Allow-Origin響應標頭中回顯該值。然而這需要更多的工作,因爲它引入了一些服務器端的條件處理。

1

我也擔心內容://在CORS中是不允許的,你可以嘗試設置Access-Control-Allow_origin*,如果那樣的話那麼這可能是問題所在。

更好的解決方案是避免執行XHR請求並使用forge.request.ajax,它將從本機代碼發出請求並避免任何跨域限制。你可以在這裏找到相應的文檔http://docs.trigger.io/en/v1.4/modules/request.html#modules-request

+1

*在我的方案中是不允許的,因爲我正在使用Access-Control-Allow-Credentials:「true」。 forge.request.ajax路線可能是最好的路線.. – AyKarsi