powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не могу решить проблему с доступом Cross-Origin Resource Sharing
5 сообщений из 5, страница 1 из 1
Не могу решить проблему с доступом Cross-Origin Resource Sharing
    #39951229
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать мульти UPLOAD файлов на другой сервер. У хостера есть лимиты. Хостер отличный, но покупать больше места под файлы достаточно дорого. Имеется свой сервер, который работает как файлообменник NGINX+Apache2+PHP и NodeJS там тоже тусуется в качестве чата и аналитики в реальном времени.

Мульти Upload вставляется в страницу как IFRAME. Это удобное решение. Можно также интегрировать и без IFRAME. Для моей задачи у меня почти получилось реализовать идею через IFRAME по схеме №2 (на рисунке). Схема №1 - это рабочая схема но без участия дополнительного сервера (как было). Я пытался решить проблему двумя решениями №2 и №3, но натыкаюсь на проблему с доступом "Cross-Origin Resource Sharing".
Почитал инструкцию, вписал в код PHP чтоб давал ответ
Код: php
1.
header("Access-Control-Allow-Origin: *");


Хоть на двух серверах такой заголовок даю и почему-то никак это не помогает.
Кто сталкивался с подобным?
...
Рейтинг: 0 / 0
Не могу решить проблему с доступом Cross-Origin Resource Sharing
    #39951232
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По №2.Скрипт из IFRAME выдаст ошибку
Код: javascript
1.
obl=parent.$('#xf_obl').val();


любое обращение к странице выше уровнем IFrame выдаст ошибку доступа

По №3 ошибку выдаст при попытке отправить xhr.send на другой ресурс
Код: javascript
1.
2.
3.
4.
5.
6.
7.
 xhr.open("POST", queryString, true);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
        if (this._options.encoding == 'multipart' && typeof FormData !== 'undefined') {
            var formData = new FormData();
            formData.append('qqfile', file);
            xhr.send(formData);


Текст ошибки:
Access to XMLHttpRequest at 'https://......other/engine/ajax/upl.php?PHPSESSID=.....' from origin 'https://......com' has been blocked by CORS policy: Request header field x-requested-with is not allowed by Access-Control-Allow-Headers in preflight response.
...
Рейтинг: 0 / 0
Не могу решить проблему с доступом Cross-Origin Resource Sharing
    #39951243
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил проблему следующим образом:
Код: php
1.
2.
3.
4.
header("Access-Control-Allow-Origin: https://Мой_сайт");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,X-File-Name");
header("Access-Control-Expose-Headers: Content-Length,Content-Range");




Находил что-то подобное, но не рабочий мой вариант:
1. Какой смысл в заголовке X-Requested-With?
2. Сдесь можно потестировать
Понял что header "Access-Control-Allow-Origin: мой сайт" дает результат, но разрешений недостаточно
3. Список разрешений для NGINX
Дописал еще одно разрешение X-File-Name и все заработало
...
Рейтинг: 0 / 0
Не могу решить проблему с доступом Cross-Origin Resource Sharing
    #39951244
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало по №3
Хотелось бы еще разобраться и с №2
Почитал, что можно использовать
<iframe src="URL" sandbox =" allow-same-origin || allow-top-navigation || allow-forms || allow-scripts "></iframe>
Почему-то не заработало. Не смог разобраться в чем причина. Может уже отменили ?
...
Рейтинг: 0 / 0
Не могу решить проблему с доступом Cross-Origin Resource Sharing
    #39951526
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В подобных случаях еще один камень спотыкания - это свойство upload_max_filesize, которое по умолчанию на сервере Apache2 установлен 2М. Много раз ответ был непонятным. Если бы кто-то поднимал эту тему раньше, я бы быстренько разобрался.
Рекомендую воспользоваться функцией phpinfo() чтоб разсмотреть другие возможные проблемы.
А также рекомендую уствновить идентичные разрешения в Apache2, чтоб не получать полный игнор, а адекватные ошибки, потому, что если на любом этапе серверу что-то не нравится, то в Header ничего не остылается из PHP и мы получим ту же ошибку контроля доступа
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не могу решить проблему с доступом Cross-Origin Resource Sharing
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]