2011-04-28 179 views
1

我試圖訪問posterous API,通過谷歌Chrome擴展(和其他方式)發佈一些內容到網站。

由於它是一個公共API,所以我期望它允許所有人張貼,但由於某種原因,它不允許發佈。

但每次我得到錯誤。當我從瀏覽器

訪問

同樣的錯誤來這裏是

http://localhost沒有被訪問控制允許來源時,允許通過瀏覽器訪問的錯誤

這裏的錯誤當通過鉻擴展訪問時

XMLHttpRequest cannot load http://posterous.com/api/2/users/me/sites/primary/posts?api_token=vxgufysnzlDwmEtkbDbzHtxxBADsEFGr&email=***@gmail.com&password=***. Origin chrome-extension://maabelkjnhafpphacjecmcnkkmjndjgl is not allowed by Access-Control-Allow-Origin. 

下面的代碼:

$.ajax({ 
     //type: 'GET', 
     url: 'http://posterous.com/api/2/users/me/sites/primary/posts?api_token=vxgufysnzlDwmEtkbDbzHtxxBADsEFGr&[email protected]&password=WHY_DID_YOU_PUT_YOUR_REAL_PASS', 
     // url:'http://posterous.com/api/2/users/me/sites/primary/posts/public', 
     type : 'POST', 

     dataType: 'json', 
     crossDomain: true, 
     data: "{'title': 'test posterous'}", 
     contentType:'text/plain', 
     success:function result(data) { 
       alert("Call completed successfully"); 
     } 
+0

你實際上沒有在上面的代碼中發佈你的密碼嗎? – sdolgy 2011-04-28 13:53:36

+0

已編輯。 ._你很幸運沒有落入壞人之手。 – mattsven 2011-04-28 14:53:16

+0

你在後臺頁面中運行這個嗎? – serg 2011-04-28 18:30:50

回答

4

manifest.json文件應該有你要找的權限來使用這兩個域名:

"permissions": [ 
    "http://*.posterous.com/", 
    "http://localhost/" 
] 

對於它的價值,我將不包括localhost在您的permissions;相反,請使用您計劃在生產中使用的域,然後使用hosts一行將域重定向到您自己的服務器。這可以讓你在你自己的服務器上開發,但不會強迫你的用戶允許他們可能不期望的localhost的權限。

+0

準確。來自Google代碼:http://code.google.com/chrome/extensions/manifest.html#permissions「如果擴展程序要與在頁面上運行的代碼進行交互,則必須提供許多擴展功能,例如跨源XMLHttpRequests,以編程方式注入內容腳本,Cookie API需要主機權限。有關語法的詳細信息,請參閱匹配模式。「 – mattsven 2011-04-28 14:53:57

+0

Nexxeus謝謝你取代原來的通行證,它跳過我的腦海:) – user724275 2011-04-28 21:05:24