Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Проблема с загрузкой аватаров Вконтакте ( crossdomain.xml = 404 ) (http://www.flasher.ru/forum/showthread.php?t=213680)

garymar 13.12.2016 02:13

Проблема с загрузкой аватаров Вконтакте ( crossdomain.xml = 404 )
 
Вложений: 3
Привет всем.

Периодически не грузятся аватары Вконтакте. Пишет https://pp.vk.me/crossdomain.xml - 404 (нету на серваке).

Приложение грузится через iFrame

Кто знает как с этим бороться?

caseyryan 13.12.2016 05:41

Естественно его там нет. Делай проксирование аватарок через свой сервер. Я так обходил все кроссдоменные проблемы при работе через iFrame с разных социалок

strangedk 13.12.2016 16:06

@caseyryan, ты имеешь в виду делать запрос на свой сервер с правильным crossdomain, а он уже обращается на сервер VK за аватарками?

А как там с безопасностью, если api-ключ таскать через еще один сервер?

faraday 13.12.2016 17:42

strangedk, картинки можно получать без ключа, обычный гет запрос пайпать.
garymar, пробуй грузить в таких случаях через http, обычно срабатывает

strangedk 13.12.2016 22:09

Цитата:

Сообщение от faraday (Сообщение 1197907)
strangedk, картинки можно получать без ключа, обычный гет запрос пайпать.
garymar, пробуй грузить в таких случаях через http, обычно срабатывает

Спасибо за наводку. Но насчет второго - ВК вроде всех пугает, что «скоро» будет поддерживать исключительно HTTPS.

faraday 13.12.2016 23:33

таким могут пугать только браузеры) В вк довольно часто игроки грузят игру именно по http, и приходится вручную заменять протокол у аватарок чтоб грузились норм.
еще вариант раньше был грузить как binary картинки и загружать в loader чистые байты, но как щас хз)

undefined 13.12.2016 23:48

могу ошибаться, но вроде грузить и показывать можно откуда угодно.Проблемы начинаются когда пытаешься достучаться до битмапы изображения.Поэтому если грузить обычным лодером - проблем быть не должно(В смысле кроссдоменник в этом случае не нужен).

caseyryan 14.12.2016 05:47

Цитата:

(В смысле кроссдоменник в этом случае не нужен).
Нужен, это ничего не меняет.
Цитата:

garymar, пробуй грузить в таких случаях через http, обычно срабатывает
мм.. как это может помочь ситуации? Если игра висит в айфрейме, то есть находится на другом домене, загрузка через http так же потребует наличие crossdomain.xml. Нет разницы грузить ее по безопасному соединению или открытому
Цитата:

@caseyryan, ты имеешь в виду делать запрос на свой сервер с правильным crossdomain, а он уже обращается на сервер VK за аватарками?
Да, именно так. Можно просто слать своему серверу ссылку на картинку, а оттуда перенаправлять ее обратно приложению например так
PHP код:

echo file_get_contents($url); 

Не самый безопасный способ конечно, если делать это без дополнительных проверок) Но междоменную политику обойти позволяет. Удобно, когда одна и та же игра висит в нескольких социалках сразу

strangedk 14.12.2016 13:18

Цитата:

Сообщение от faraday (Сообщение 1197921)
таким могут пугать только браузеры) В вк довольно часто игроки грузят игру именно по http, и приходится вручную заменять протокол у аватарок чтоб грузились норм.
еще вариант раньше был грузить как binary картинки и загружать в loader чистые байты, но как щас хз)

Многие и API переводят. Игры в том числе.
http://image.prntscr.com/image/abce5...16636ac3f1.png

undefined 14.12.2016 14:10

Вложений: 1
Цитата:

Нужен, это ничего не меняет.
Точно точно?
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
        import flash.text.TextField;
 
        /**
        * ...
        * @author
        */

        public class Main extends Sprite
        {
                private var loader:Loader;
                private var tf:TextField;
                public function Main()
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        loader = new Loader();
                        tf = new TextField();
                        tf.x = tf.y = 320;
                        tf.width = tf.height = 300;
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
                        loader.load(new URLRequest("https://dl.dropboxusercontent.com/u/68778662/icon.jpg"));
                }
                private function onComplete(e:Event):void
                {
                        loader.removeEventListener(Event.COMPLETE, onComplete);
                        addChild(loader);
                        addChild(tf);
                        try {
                                var bmp:Bitmap = loader.contentLoaderInfo.content as Bitmap;
                                var str:String = bmp.bitmapData.width + "x" +bmp.bitmapData.height;
                                tf.text = str;
                        } catch (e:SecurityError) {
                                tf.text = "error:" + e.message;
                        }
                }
        }       
}

LoaderTest.swf   (1.4 Кб)

strangedk 14.12.2016 14:36

Цитата:

Сообщение от undefined (Сообщение 1197927)
Точно точно?

Так он там есть)
https://dl.dropboxusercontent.com/crossdomain.xml

А чтобы не было ошибки #2122, необходимо в вашем случае дописать:
Код AS3:

Security.loadPolicyFile("https://dl.dropboxusercontent.com/crossdomain.xml");


undefined 14.12.2016 15:02

Цитата:

Так он там есть)
А чего же тогда ошибка выскакивает?
Я как раз доказываю что если требуется только отобразить картинку, кроссдоменник не нужен.

Добавлено через 12 минут
к тому же, судя по всему, этот кросдоменник дает доступ только флэшкам хостящимися на дропбоксе.

Tails 14.12.2016 15:15

Цитата:

Сообщение от undefined (Сообщение 1197929)
А чего же тогда ошибка выскакивает?
Я как раз доказываю что если требуется только отобразить картинку, кроссдоменник не нужен.

Вроде как, у такого способа был недостаток один, нельзя использовать такую загруженную битмапу в методе BitmapData.draw() (В том числе, если она вложена в другой DisplayObjectContainer, передаваемый методу draw). Например, скриншотик не сделать, кидается ошибка безопасности. Ну и обращаться к свойства загруженной битмапки тоже запрещено.

undefined 14.12.2016 15:20

Сам лоадер можно крутить как хочешь
Цитата:

Проблемы начинаются когда пытаешься достучаться до битмапы изображения

Nooob 16.12.2016 10:50

Цитата:

Сообщение от strangedk (Сообщение 1197928)

Есть то есть, но там доступ только на свои домены, поэтому толку от этого нету
Код:

<cross-domain-policy>
<allow-access-from domain="flash.dropboxstatic.com"/>
<allow-access-from domain="swf.dropboxstatic.com"/>
</cross-domain-policy>

тем временем https://pp.vk.me/crossdomain.xml
Код:

<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-http-request-headers-from domain="*" headers="*"/>
<allow-access-from domain="*" to-ports="80"/>
<allow-access-from domain="*" to-ports="443"/>
</cross-domain-policy>

а вот на https://vk.me/crossdomain.xml
Код:

<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-http-request-headers-from domain="vk.com" headers="*"/>
<allow-http-request-headers-from domain="vkontakte.ru" headers="*"/>
<allow-http-request-headers-from domain="vkadre.ru" headers="*"/>
<allow-http-request-headers-from domain="*.vkadre.ru" headers="*"/>
<allow-access-from domain="vk.com" to-ports="80"/>
<allow-access-from domain="vkontakte.ru" to-ports="80"/>
<allow-access-from domain="vkadre.ru" to-ports="80"/>
<allow-access-from domain="*.vkadre.ru" to-ports="80"/>
</cross-domain-policy>

чтотокакто нестабильно

а еще раздражает что дефолтные аватарки https://vk.me/images/camera_100.png находятся на vk.me

faraday 16.12.2016 12:42

дефолтные аватарки с собачками проще чекать сразу, и грузить заглушку со своего серва

undefined 16.12.2016 14:01

Цитата:

а еще раздражает что дефолтные аватарки https://vk.me/images/camera_100.png находятся на vk.me
У фб аналогичная ситуация все фотки грузятся флэшем с фейсбучных CDN без проблем.Все кроме дефолтных иконок(конкретно у меня не хотел грузить заглушку для кавера пустого альбома)
Походу VK даже баги с фб передирает :)

Tails 16.12.2016 14:35

Эта политика кроссдоменников принесла миру одни только проблемы. Кто в курсе, объясните, от чего защищает политика кроссдоменников?


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

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