2017-02-10 66 views
1

更新的問題解決和歷史CORS與Aurelia路上-CLI服務器

我的設置是這樣的:

setup

我CORS明白走錯了路周圍,以爲HTTP服務器應該服務標題。事實是,它是需要提供CORS頭文件的第三方API。

由於第三方不發送CORS標頭,並fetch client希望那些(繞過瀏覽器的同源策略)出現這樣的錯誤消息:

提取API無法加載http://api.sl.se/api2/realtimedeparturesV4.json?key=b99d17e1714142ca90ed017aeead32fc&siteid=9001。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'http://localhost:9000'因此不允許訪問。

現在,可能會在提取客戶端中使用{mode: 'no-cors'}來關閉CORS,但禁止JavaScript(除非響應是純文本)。

我選擇的解決方案是在服務器端實現代理(爲了簡單起見:與Aurelia頁面相同的域),然後調用第三方。服務器端沒有CORS限制。

更好的解決方案是第三方支持CORS,但有時這不是一個選項(即第三方)。

+1

沒有。這是需要發送CORS頭的API。 – LStarky

+1

如果您發佈有關您的API設置的更多細節,也許我們可以提供幫助。但它絕對與Aurelia-CLI無關。 – LStarky

+0

現在更多的細節 – specimen

回答

1

Aurelia Fetch客戶端的默認值是CORS,因此您的Aurelia應用程序應該能夠從第三方服務器獲取。 您的API端點(而不是您的Aurelia Cli服務器)可能無法在CORS運行所需的預檢請求中將正確的標題發送回瀏覽器(您的Aurelia應用程序)。當然,什麼標題取決於您嘗試發送和接收的內容以及您的端點的內容。

+0

我已經添加了代碼,包括API端點(開放端點)的URL。我對CORS的理解是,它是服務於發送頭文件的初始Aurelia應用程序的服務器(允許瀏覽器與誰聯繫),但我開始認爲這是錯誤的。 – specimen