2010-01-07 26 views
5

Tôi không thể truy cập Yahoo! Nền tảng ứng dụng chạy tôi tiếp tục bị từ chối truy cập ngay cả khi tệp chính sách của họ chấp nhận yêu cầu từ bất kỳ miền nào.bị từ chối do thiếu quyền đối với tệp chính sách

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 hoạt động btw, tôi đã chỉnh sửa một số nội dung vì nó có khóa và nội dung của tôi.


Các liên kết tới những thứ tôi đang cố gắng để làm

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

YOSSimple đúng cách tạo ra các url thực sự vì nếu tôi gõ nó trong trình duyệt của tôi, tôi đang nhắc nhở nếu tôi muốn tải về tập tin đó chứa thông tin liên quan đến hồ sơ của tôi.

Nhưng nó sẽ không mở nó trong Flash.

+0

bạn sandbox an ninh là những gì? Hãy thử với địa phương đáng tin cậy như tôi không thấy bất kỳ vấn đề với tập tin chính sách crossdomain. – bhups

+0

Tôi đang sử dụng CS4 btw. Tôi đã thiết lập các thiết lập publish của nó thành 'Access network only' và nó vẫn không hoạt động. – lemon

+0

Bạn có thể đăng mã thực hiện yêu cầu không? – Jacob

Trả lời

2

Tôi đoán rằng nó không tự động tải tệp chính sách. Bạn nên thử sử dụng Security.loadPolicyFile("http://social.yahooapis.com/crossdomain.xml");

Bạn đã cài đặt webproxy mà bạn có thể giám sát những tệp nào được tải chính xác chưa? Yêu thích của tôi là Charles nhưng cũng có các plugin FF miễn phí như Httpfox

EDIT: Tôi nghĩ rằng tôi biết điều gì đang xảy ra. Nó đi sai theo cách khác xung quanh, swf từ yahoo đang cố gắng truy cập vào swf của bạn, nhưng không có quyền chính xác. bạn sẽ cố gắng

Security.allowDomain('http://social.yahooapis.com/'); 
+0

Đã cố gắng tải chính sách theo cách thủ công, vẫn không hoạt động. Sẽ thử rằng điều webproxy trong một vài. – lemon

+0

Các tệp đang được tải không có vấn đề ở đó. [http://social.yahooapis.com/crossdomain.xml, YOSSimple.swf, v.v.]. Nó nói rằng nó tải SWF đầu tiên trước khi tho XML, đó có phải là vấn đề? – lemon

+0

Không, đó là cách thực hiện. BTW, tôi đã chỉnh sửa câu trả lời của mình, tôi nghĩ rằng tôi biết điều gì đang xảy ra. – Creynders

0

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

sử dụng HTTP phân tích để xem whats xảy ra?

cũng kiểm tra không bỏ lỡ của bạn http://www. với http: // vì flash coi chúng là các tên miền khác nhau

cũng là bạn đang chạy mã cục bộ trên máy của mình. Nó có thể là thiết lập bảo mật địa phương của bạn

0

Một WebProxy đơn giản sẽ sửa lỗi này:

<?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

Sửa đổi proxy dụ web trên để hỗ trợ nhiều tùy chọn như sau:

$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 
Các vấn đề liên quan