Ионная проблема с CORS - PullRequest
       19

Ионная проблема с CORS

0 голосов
/ 03 января 2019

Я столкнулся с проблемой 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

1 Ответ

0 голосов
/ 03 февраля 2019

У вас всегда будут проблемы с CORS в WKWebview, если вы не можете изменить настройки сервера, вы не можете сделать это клиентом.Предложение, изменить на ионный родной http

https://ionicframework.com/docs/v3/native/http/

...