Cross Origin в ajax не работает для файла .properties в IOS (10.3.1)

Я использовал плагин i18n для загрузки файла *.properties для перевода, и он отлично работает. на платформе Android, но та же библиотека не работает на IOS 10.3.1. Это дает мне следующую ошибку:

введите описание изображения здесь

Я сделал некоторые изменения в библиотеке i18n, но она все еще не работает.

function loadAndParseFile(filename, settings) {
    $.ajax({
        url: filename,
        async: false,
        cache: settings.cache,
        crossDomain: true,
        jsonpCallback: 'callback',
        contentType: 'text/plain;charset=' + settings.encoding,
        dataType: 'text',
        success: function (data, status) {
            parseData(data, settings.mode);
        }
    });
}

В приведенном выше коде:

я был добавлен междоменный «true» и тип данных «текст»... когда я изменил тип данных «текст» на «jsonp», он работает, но выдает ошибку файла .properties. Пожалуйста, проверьте ниже ошибку..

введите описание изображения здесь

Это означает. файл загружен, но внутренний формат данных другой.


person Community    schedule 23.06.2017    source источник
comment
Да, в журнале указано, что файл Messages.properties недействителен (неожиданный идентификатор «Пользователь»). Это статический файл или сгенерированный? В любом случае: вам нужно это исправить.   -  person Wukerplank    schedule 23.06.2017
comment
@Wukerplank Да, это статический файл..   -  person    schedule 23.06.2017
comment
Вы передаете здесь действительный URL... $.ajax({ url: filename, ... })?   -  person joshuamabina    schedule 27.06.2017
comment
@joshuamabina.. Да.. URL-адрес действителен.. его путь к файлу   -  person    schedule 28.06.2017
comment
@Goku, вы должны поместить этот файл на свой сервер, а затем попытаться получить к нему доступ с сервера. IOS имеет другую файловую структуру, чем Windows. Вот почему он работает в Windows, а не в IOS, и для вызова AJAX требуется работа протокола.   -  person Shubham    schedule 03.07.2017
comment
@all Пожалуйста, дайте мне решение .. я пробовал выше, но это не сработало ..   -  person    schedule 04.08.2017
comment
@Goku, как сказал @Shubham, попробуйте загрузить эти файлы на сервер, файлы загружаются с протоколом file://, который может работать в Windows, но IOS более строгий и, возможно, блокирует эти вызовы.   -  person Frankusky    schedule 05.11.2017
comment
Вы добавляете заголовок при вызове ajax   -  person jd savaj    schedule 09.12.2019
comment
заголовки: { 'Access-Control-Allow-Origin':'Хост вашего сайта'},   -  person jd savaj    schedule 09.12.2019
comment
Отвечает ли это на ваш вопрос? iOS11 вызывает проблемы CORS во всех мобильных браузерах   -  person user4157124    schedule 03.06.2020
comment
JSONP работает по-другому, вы должны обернуть его функцией обратного вызова и разрешить ее, чтобы получить нужный вам ресурс. Это просто темп. Всегда используйте заголовки CORS, включенные на стороне сервера.   -  person pavanjoshi    schedule 21.05.2021


Ответы (1)


Если вы сейчас используете JSONP вместо текста, файл будет загружен как код javascript, поэтому, если содержимое не является допустимым кодом javascript, произойдет сбой.

Окружите данные назначением глобальной переменной или вызовом функции:

    window.variable = "_DATA_"; // or
    functionName("_DATA_");

Если _DATA_ имеют формат JSON, вам не нужно заключать их в кавычки, иначе вам нужно будет использовать «_DATA_», потому что без кавычек это не будет допустимым синтаксисом javascript.

person user1039663    schedule 09.11.2017