2017-04-18 84 views
0

這是代碼。Ionic:有點與IOS模擬器奇怪的CORS問題

$http({ method: 'GET', url: imageUrl }); 

我正在使用Ionic框架。它在web,andorid mobile和android模擬器中工作正常。

但是,當我使用相同的IOS 9.3模擬器(4.1.1),我得到的錯誤XMLHttpRequest cannot load 'imageUrl'. Origin 'XXX' is not allowed by Access-Control-Allow-Origin.

我想我可以消除後端任何可能的錯誤,因爲它正在與其他UI構架。同樣在後端(Django framework)我已將CORS_ORIGIN_ALLOW_ALLCORS_ALLOW_CREDENTIALS設置爲True,將端口的IP地址添加到CORS_ORIGIN_WHITELIST,並在CORS_ALLOW_HEADERS中添加了所需的標頭(包括Access-Control-Allow-Origin)。

那麼,有什麼具體的事情需要做,使這個錯誤消失的IOS模擬器/平臺?

回答

0

當你運行:

ionic cordova emulate ios -l -c -s 

這我的猜測是,是你在做什麼,模擬器啓動並綁定到你的Mac的IP地址而不是「localhost」的。這會使您的接收端點在您的獲取請求的請求標頭中看到您的Mac的IP,因爲這是與模擬器不同的地址,它會將您的請求視爲跨域請求。

請嘗試從離子團隊以下指南:

Handling CORS issues in Ionic

簡而言之:

  1. 在ionic.config.json文件中設置代理

    { "name": "proxy-example", "app_id": "", "proxies": [ { "path": "/api", "proxyUrl": "http://cors.api.com/api" } ] }

    1. 將您的請求指向您的實時重載服務器正在使用的端口的localhost。你可以這樣設置這個在您的模擬命令:

    離子科爾多瓦模仿IOS -l -c -s --port 8080