Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Строка URL из редиректа PHP (http://www.flasher.ru/forum/showthread.php?t=153578)

_sestra_ 05.04.2011 15:51

Строка URL из редиректа PHP
 
Есть PHP, который редиректит на FLV

URL: http://тра-та-та?id=n
Результат: http://тра-та-та/video.flv

Как мне получить конечный адрес? Нужна просто строка.

P.S. при этом видео грузить не нужно, просто получить абсолютный путь и записать в переменную.

wvxvw 05.04.2011 16:20

Боюсь, что во флеше никак (в AIR вроде можно посмотреть заголовки ответа, но я не уверен, что Location туда попадет, если так делали редирект).

EDIT: А, если не нужно грузить, то можно попробовать сокетом коннектится (ограничения безопасности...) или, я не уверен, но может URLStream покажет заголовки, я бы последнее попробовал.

_sestra_ 05.04.2011 16:42

Цитата:

но может URLStream покажет заголовки
Подскажешь как читать заголовки?

kseniya 05.04.2011 16:53

URLStream не показывает хедер, Socket показывает хедер...
вот здесь я писала как http://www.flasher.ru/forum/showpost...7&postcount=10

_sestra_ 05.04.2011 17:14

Спасибо. Только в вашем примере приходит "400 Bad Request". В чем может быть проблема?

kseniya 05.04.2011 17:24

Цитата:

Сообщение от _sestra_ (Сообщение 986760)
Спасибо. Только в вашем примере приходит "400 Bad Request". В чем может быть проблема?

Посмотрите снифером (CommView) или ещё каким способом что ваш браузер отправляет в заголовке и какие строки в стиле:
Код AS3:

write("GET /forum/showthread.php?t=152349 HTTP/1.1 \r\n");
write("User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.01 \r\n");

если пришло "400 Bad Request" значит заголовок неправильный отправили, нужно эксперементировать....

_sestra_ 05.04.2011 17:26

Я прямо ваш пример пробовал. Но это не важно. Сформировал вот такой запрос:

Код AS3:

socket.connect("site.com", 80);
write("GET /allocator/get_video.php?id=108 HTTP/1.1 \r\n");
write("Host: site.com\r\n");
write("Connection: Close\r\n\r\n");

Все получилось. Спасибо еще раз.

kseniya 05.04.2011 17:27

плюсуем не стесняемся)

_sestra_ 05.04.2011 17:28

Вдогонку: Location как выделить теперь? Только работой со строкой? или можно кому-нибудь скормить?

kseniya 05.04.2011 17:30

строкой. split или регулярными..

_sestra_ 05.04.2011 19:17

И еще вопрос по политике безопасности:

На хосте лежит файл политики безопасности вида:
Код:

<?xml version="1.0"?>
<cross-domain-policy>
        <site-control permitted-cross-domain-policies="all"/>
        <allow-access-from domain="*"/>
</cross-domain-policy>

Файлы грузит нормально, а когда Socket коннекчу по 80 порту, то ошибка 2048 нарушение изолированной среды.

Что-то не так делаю?

P.S. Пишу еще раз запрос:
Код AS3:

socket.connect("site.com", 80);
write("GET /allocator/get_video.php?id=108 HTTP/1.1 \r\n");
write("Host: site.com\r\n");
write("Connection: Close\r\n\r\n");


wvxvw 05.04.2011 23:37

Нужно сервер настроить, чтобы он отдавал файл политик (или вернее его содержание) в ответ на запрос "<policy-file-request/> ". К сожалению, статический файл с таким именем создать не удастся :) поэтому прийдется как-то обходить это ограничение - запускать слушающий сокет на 443 или 80 порту (последнее, естественный образом перекроет отсылку любых других HTTP сообщений...) и из этого порта, после запроса, отдавать нужный XML.

dimarik 05.04.2011 23:53

Цитата:

Сообщение от _sestra_ (Сообщение 986838)
И еще вопрос по политике безопасности:

На хосте лежит файл политики безопасности вида:
<skipped>
Файлы грузит нормально, а когда Socket коннекчу по 80 порту, то ошибка 2048 нарушение изолированной среды.

http- и socket-политики — это две большие разницы.

_sestra_ 06.04.2011 11:42

Спасибо, сейчас попробую.

Добавлено через 6 часов 6 минут
Цитата:

Сообщение от wvxvw (Сообщение 986923)
Нужно сервер настроить, чтобы он отдавал файл политик (или вернее его содержание) в ответ на запрос "<policy-file-request/> ". К сожалению, статический файл с таким именем создать не удастся :) поэтому прийдется как-то обходить это ограничение - запускать слушающий сокет на 443 или 80 порту (последнее, естественный образом перекроет отсылку любых других HTTP сообщений...) и из этого порта, после запроса, отдавать нужный XML.

А как технически организовать ответ от сервера, необходимо как то особо настроить Apache 2.2 или надо написать своего демона который будет сидеть на 443 порту и ждать запросы?

wvxvw 06.04.2011 20:12

С Апачем и конкретно этим портом есть напряг... этот порт по умолчанию используется для SSL соединений... я не уверен, что это можно настроить - надо смотреть мануал :) Можно попробовать написать свой "демон", но как его корректно поставить за Апачем - я опять же не специалист. Я бы смотрел в сторону того, как делают всякие mod_apache_<...>. Т.е. Апачи иногда используют как обратный прокси, за которым уже работает реальный сервер (распространненая практика во всяких эзотерических языках, типа neko, Lisp и т.п.) Либо самому собирать Апачи... но я не уверен, что это хорошая мысль... :)
Но... я бы не стал так сильно углублятся - т.как похоже, что проблема того не стоит. Еще есть такой вариант - попробовать из JavaScript отправить XMLHttpRequest - он вроде как должен показывать заголовки. Ну и собственно, создать такой запрос из флеша - гораздо проще, чем перекомпилировать сервер :) По крайней мере попробовать стоит.


Часовой пояс GMT +4, время: 19:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.