Я столкнулся с проблемой CORS, как и ожидалось для
1. ionic serve
и
2. ionic cordova run android
3. ionic cordova build android --debug
Я решил проблему для 1. ionic serve
, используя
- локальный прокси в
ionic.config.json
согласно этому блогу https://blog.ionicframework.com/handling-cors-issues-in-ionic/
"proxies": [
{
"path": "/proxy",
"proxyUrl": "https://xx.xx.xx/"
}
]
- установить заголовок Access-Control-Allow-Origin в моих вызовах POST как:
>
reqOpts = {
headers: new HttpHeaders({
'Content-Type':'application/json',
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods':'POST, GET, PUT, OPTIONS, DELETE, PATCH',
'Accept':'application/json',
})
};
Но с использованием 2. ionic cordova run android
и 3. ionic cordova build android --debug
у меня все еще есть ошибка ниже:
01-02 15:49:48.815 3682-3889/com.xx.xx D/SERVER: Handling local request: http://localhost:8080/proxy/xx/login
01-02 15:49:48.859 3682-3682/com.xx.xx D/SystemWebChromeClient: http://localhost:8080/build/main.js: Line 834 : [object Object]
01-02 15:49:48.859 3682-3682/com.xx.xx I/chromium: [INFO:CONSOLE(834)] "[object Object]", source: http://localhost:8080/build/main.js (834)
01-02 15:49:48.863 3682-3682/com.xx.xx D/SystemWebChromeClient: http://localhost:8080/build/vendor.js: Line 1823 : ERROR
01-02 15:49:48.864 3682-3682/com.xx.xx I/chromium: [INFO:CONSOLE(1823)] "ERROR", source: http://localhost:8080/build/vendor.js (1823)
В блоге также упоминается, что при создании APK-кодов проблем не будет. Но если я удалю прокси и сделаю APK, используя 3. ionic cordova build android --debug
Access to XMLHttpRequest at 'https://xx.xx.xx/xx/login'
from origin 'http://localhost:8080' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource. main.js:835
Появляется проблема с Cors. Почему это происходит для APK для меня? Не должны ли на устройстве использовать ресурсы из file: //, а не localhost: // и, таким образом, избежать проблемы с CORS?
А как мне
а. исправить ошибку cors
или
б. заставить работать прокси для сборок APK.
Как ни странно, ответ сервера имеет Access-Control-Allow-Origin
Server →nginx/1.10.3 (Ubuntu)
Date →Thu, 03 Jan 2019 14:25:23 GMT
Content-Type →application/json
Content-Length →1010
Connection →keep-alive
Access-Control-Allow-Origin →*
Access-Control-Allow-Methods →POST
Ионная версия: 4.5.0
ОС: Mac OSX Mojave
платформа: Android