PDA

Просмотр полной версии : Помогите решить проблему политики безопасности


freehippy
16.06.2012, 16:30
Всем привет. Очень долго бьюсь над проблемой политики безопасности моего приложения и всё без результатно.

Итак в чём суть:
У меня Node.js сервер, к которому подключаеться Flash приложение по средствам websocket. Порт подключения 10081. Сервер на ходиться в интернете, если я запускаю приложение с Flash Builder приложение прекрасно подключаеться. Когдя я его выливаю в контакт, вылетает ошибка политики безопасности:
ОК: Выполнена загрузка SWF-файла корневого уровня: http://vk.com/swf/api_external2_0.swf?2
ОК: Выполнена загрузка SWF-файла корневого уровня: http://cs305301.vk.com/u14258660/1023811f83c9ea.zip
ОК: Выполняется поиск директив <allow-access-from> в файлах политики, чтобы авторизовать загрузку данных из ресурса по адресу http://78.108.95.129:10081/socket.io/1/?t=1339844635980 инициатором запроса из http://cs305301.vk.com/u14258660/1023811f83c9ea.zip
Ошибка: [строгий] Игнорирование файла политики на http://78.108.95.129:10081/crossdomain.xml из-за отсутствия типа содержимого. Сведения об устранении этой проблемы см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Ошибка: Запрос ресурса на http://78.108.95.129:10081/socket.io/1/?t=1339844635980 источника запроса из http://cs305301.vk.com/u14258660/1023811f83c9ea.zip отклонен из-за отсутствия разрешений в файле политики.

Повесил на порт 10843 отдачу файла политики:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

И пытался до подключения к сокетному сервреру получить этот файл политики:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://78.108.95.129:843");

Но это ни к чему не приводит
ОК: Выполнена загрузка SWF-файла корневого уровня: http://vk.com/swf/api_external2_0.swf?2
ОК: Выполнена загрузка SWF-файла корневого уровня: http://cs305301.vk.com/u14258660/0bd7cf910ac3f9.zip
ОК: Выполняется поиск директив <allow-access-from> в файлах политики, чтобы авторизовать загрузку данных из ресурса по адресу http://78.108.95.129:10081/socket.io/1/?t=1339845691727 инициатором запроса из http://cs305301.vk.com/u14258660/0bd7cf910ac3f9.zip
Ошибка: [строгий] Игнорирование файла политики на http://78.108.95.129:10081/crossdomain.xml из-за отсутствия типа содержимого. Сведения об устранении этой проблемы см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Ошибка: Запрос ресурса на http://78.108.95.129:10081/socket.io/1/?t=1339845691727 источника запроса из http://cs305301.vk.com/u14258660/0bd7cf910ac3f9.zip отклонен из-за отсутствия разрешений в файле политики.


При этом если я запускаю в Flash Builder, он говорит что принимает этот файл политики!
ОК: Выполнена загрузка SWF-файла корневого уровня: file:///Users/Bender/Documents/Adobe Flash Builder 4.6/socketio/bin-debug/socketio.swf
Предупреждение: Заголовки ответов HTTP недоступны на этой платформе. Строгие правила файла политики не могут быть применены.
ОК: Файл политики принят: http://78.108.95.129:10843

------

Я подумал и решил сделать так:
var policySocket:XMLSocket = new XMLSocket();
policySocket.connect('78.108.95.129', 10843);

// далее код подключения к сокетному серверу с потром 10081
// ..


Вот что выдаёт дебаггер
ОК: Выполнена загрузка SWF-файла корневого уровня: http://cs305301.vk.com/u14258660/f2565a3f794d29.zip
ОК: Выполнена загрузка SWF-файла корневого уровня: http://vk.com/swf/api_external2_0.swf?2
ОК: Выполняется поиск директив <allow-access-from> в файлах политики, чтобы авторизовать загрузку данных из ресурса по адресу xmlsocket://78.108.95.129:10843 инициатором запроса из http://cs305301.vk.com/u14258660/f2565a3f794d29.zip
ОК: Файл политики принят: xmlsocket://78.108.95.129:10843
ОК: Запрос ресурса на xmlsocket://78.108.95.129:10843 источника запроса из http://cs305301.vk.com/u14258660/f2565a3f794d29.zip разрешен согласно файлу политики на xmlsocket://78.108.95.129:10843
ОК: Выполняется поиск директив <allow-access-from> в файлах политики, чтобы авторизовать загрузку данных из ресурса по адресу http://78.108.95.129:10081/socket.io/1/?t=1339846027768 инициатором запроса из http://cs305301.vk.com/u14258660/f2565a3f794d29.zip
Ошибка: [строгий] Игнорирование файла политики на http://78.108.95.129:10081/crossdomain.xml из-за отсутствия типа содержимого. Сведения об устранении этой проблемы см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Ошибка: Запрос ресурса на http://78.108.95.129:10081/socket.io/1/?t=1339846027768 источника запроса из http://cs305301.vk.com/u14258660/f2565a3f794d29.zip отклонен из-за отсутствия разрешений в файле политики.

Скажете "отдавай файл политики на том же порту", но это не удобно и те технологии которые я использую не позволяют мне это реализовать. Хотелось бы выдавать его на разных портах!

Помогите пожалуйста решить эту проблему, уже неделю бъюсь над ней и всё как пальцем в небо ((

ps (если что сервер работает)

maxkar
16.06.2012, 17:51
Помогите пожалуйста решить эту проблему, уже неделю бъюсь над ней и всё как пальцем в небо ((

Ну вам же русским языком написано:
Ошибка: [строгий] Игнорирование файла политики на http://78.108.95.129:10081/crossdomain.xml из-за отсутствия типа содержимого.
Content-type у вас какой при отдаче? Никакого? А должен быть. Посмотрите http://www.senocular.com/pub/adobe/crossdomain/policyfiles.html здесь, например. Там написано, какой Content-type должен быть. Или в справке поищите.

dimarik
17.06.2012, 23:44
Только на 843 или на запрашиваемом. По-другому на разных не получится (Socket policy files) (http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/flashplayer/pdfs/flash_player_10_security.pdf).