2017-03-05 50 views
0

我是Ionic2的新手,我嘗試通過Ionic 2應用程序訪問某些外部服務,但應用程序在控制檯中拋出錯誤。運行Ionic 2時發現CORS問題

XMLHttpRequest無法加載 https://xxxxxxxx.xxx.xxxxxx.com/xxx/xxxx/services?xxx-client=007。 對預檢請求的響應未通過訪問控制檢查:否 請求的 資源上存在「訪問控制 - 允許來源」標頭。原因'http://localhost:8100'因此不允許 訪問。響應有HTTP狀態代碼500。

我還添加代理在ionic.config.json

{ 
    "name": "XXX XXX", 
    "app_id": "", 
    "v2": true, 
    "typescript": true, 
    "proxies": [{ 
     "path": "/xxx/xxxx/services?xxx-client=007", 
     "proxyUrl": "https://xxxxxxxx.xxx.xxxxxx.com?xxx-client=007" 
    }] 
} 

我到底做錯了什麼?

請幫我解決這個問題。 (爲了防止版權,我已經取代了原來的服務名稱)

預先感謝

+0

我想如果您在手機中嘗試過,則不會發生此問題。它只有在瀏覽器中使用離子服務時纔會發生。另外,如果你想讓它在瀏覽器中運行,你需要安裝Chrome的CORS插件 - https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en讓我知道這個是否奏效。 :) –

+0

您需要在服務器端設置CORS。這取決於您使用的服務器端技術。 –

+0

@SagarKulkarni:沒有使用任何插件,我使用** chrome.exe --user-data-dir =「C:/ Chrome開發會話」 - 禁用網絡安全**命令在RUN提示符(win + r )在沒有網絡安全的情況下運行chrome,從而使我的應用程序能夠順利運行。但是,由於這是一個臨時修復,我正在尋找需要添加到我的項目中的任何代碼,就像我使用代理服務器一樣,但我沒有爲我工作。 – Prashob

回答

-2

只是嘗試安裝此Chrome Extension

UPDATE:

我所知,瀏覽器same-origin policy。因此,默認情況下,它會阻止您向另一個(第二個)域中存在的資源發出請求。然後安裝這個擴展將允許您的瀏覽器cross origin resources sharing,因此您將能夠訪問該資源。 (假設所有域都被允許訪問您的第二個域上的資源)

+1

原因的消息請詳細說明該解決方案。爲什麼安裝這個擴展可以解決問題以及如何解決這個問題 – WJM

+1

據我所知,瀏覽器有[同源政策](https://en.wikipedia.org/wiki/Same-origin_policy)。因此,默認情況下,它會阻止您向另一個(第二個)域中存在的資源發出請求。然後,安裝此擴展程序將允許在瀏覽器上使用[跨源資源共享](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing),因此您將能夠訪問該資源。 (假設所有域都被允許訪問你的第二個域的資源) –

+0

用這些知識更新你的答案可能是一個好主意。 – WJM