отказано из-за отсутствия прав доступа к файлу политики - PullRequest
5 голосов
/ 07 января 2010

Я не могу получить свой Yahoo! Платформа приложений для запуска Мне по-прежнему отказывают в доступе, даже несмотря на то, что их файл политики принимает запросы из любого домена.

OK: Policy file accepted: http://social.yahooapis.com/crossdomain.xml
Error: Request for resource at http://social.yahooapis.com/v1/user/<user id>/profile?oauth_signature_method=HMAC-SHA1&lang=en-US&oauth_consumer_key=<key>&oauth_token=<long ass token>&oauth_version=1.0&format=json&oauth_nonce=<blah blah>&oauth_timestamp=1262846353&region=US&oauth_signature=<foo bar> by requestor from http://<my domain>/YOSSimple.swf is denied due to lack of policy file permissions.

Кстати, URL работает, я кое-что отредактировал, так как в нем есть мои ключи и прочее.


Ссылки на то, что я пытаюсь сделать

http://developer.yahoo.com/flash/yos/
http://developer.yahoo.com/flash/yos/examples/simple/YOSSimple.fla

YOSSimple правильно создает URL-адрес, поскольку, если я наберу его в браузере, мне будет предложено загрузить файл, содержащий информацию о моем профиле.

Но он просто не открывается во Flash.

Ответы [ 4 ]

2 голосов
/ 11 января 2010

Я предполагаю, что он не загружает файл политики автоматически. Вы должны попробовать использовать Security.loadPolicyFile("http://social.yahooapis.com/crossdomain.xml");

У вас установлен веб-прокси, с помощью которого вы можете отслеживать, какие именно файлы загружаются? Мой любимый Charles , но есть и бесплатные плагины FF, такие как Httpfox

EDIT: Я думаю, что знаю, что происходит не так. С другой стороны, все идет не так, SWF из Yahoo пытается получить доступ к вашему SWF, но у него нет необходимых прав доступа. Не могли бы вы попробовать

Security.allowDomain( 'http://social.yahooapis.com/' );
0 голосов
/ 24 ноября 2010

Измените приведенный выше пример веб-прокси для поддержки нескольких параметров следующим образом:

$sOptions = "";

foreach($_GET as $sIndex => $sValue) {
  if ($sIndex == 'url') {
    $url = $sValue;
  } 
  else {
    if (strlen($sIndex) > 0) {
      $sOptions .= "&" . $sIndex;
    }
    if (strlen($sValue) > 0) {
      $sOptions .= "=" . $sValue;
    }
  }
}

$url .= $sOptions;

$session = curl_init($url); // Open the Curl session
0 голосов
/ 08 ноября 2010

Простой WebProxy исправит это:

<?php
    // PHP Proxy
    // Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions
    // usage: proxy.php?url=http://mysite.com/myxml.xml

    $session = curl_init($_GET['url']);                    // Open the Curl session
    curl_setopt($session, CURLOPT_HEADER, false);          // Don't return HTTP headers
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);   // Do return the contents of the call
    $xml = curl_exec($session);                            // Make the call
    header("Content-Type: text/xml");                  // Set the content type appropriately
    echo $xml;        // Spit out the xml
    curl_close($session); // And close the session
?>
0 голосов
/ 15 января 2010

http://www.ieinspector.com/httpanalyzer/

использовать HTTP-анализатор, чтобы увидеть, что происходит?

также проверьте, не совпадает ли http://www. с http: //, потому что flash рассматривает их как разные домены

также вы запускаете код локально на вашем компьютере. Это могут быть ваши локальные настройки безопасности

...