8

Theo phần mở rộng chrome API cuộc gọi cross-nguồn gốc sử dụng đối tượng XMLHttpRequest nên được cho phép nếu đặt quyền:Cross-Origin XMLHttpRequest trong phần mở rộng chrome

Một phần mở rộng có thể nói chuyện với các máy chủ từ xa bên ngoài xuất xứ của nó, miễn vì nó lần đầu tiên yêu cầu quyền đối với nguồn gốc chéo.

Tôi đang theo dõi sát the tutorial nhưng mã dưới đây đem lại cho tôi một thông báo lỗi:

XMLHttpRequest không thể tải http://www.google.com/search?hl=en&q=ajax. Phần mở rộng chrome gốc: // bmehmboknpnjgjbmiaoidkkjfcgiimbo không được Access-Control-Allow-Origin cho phép.

Tôi không chỉ cho phép yêu cầu tới google.com, mà còn yêu cầu bất kỳ trang web nào nhưng vẫn không thể vượt qua được. Có ai giúp được không?

file manifest của tôi:

{ 
    "name": "The popup", 
    "version": "0.1", 
    "popup": "popup.html", 
    "permissions": [ 
    "http://*/*", 
    "https://*/*", 
    "https://www.google.com/*", 
    "http://www.google.com/*" 
    ], 
    "browser_action": { 
    "default_icon": "clock-19.png", 
    "default_title": "This is title", 
    "default_popup": "popup.html" 
    } 
} 

cuộc gọi thực tế:

function sendRequest() { 
    document.write("Sending request"); 
    var req = new XMLHttpRequest(); 
     req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true); 
     req.onreadystatechange = function() { 
      if (req.readyState == 4) { 
      if (req.status == 200) { 
       alert(req.responseText); 
       document.write("OK"); 
      } 
      } 
     }; 
     req.send(); 
} 
+0

Đã xảy ra sự cố tương tự. Tôi đã làm với việc không thiết lập quyền miền chéo trong manifest.json. Tôi sẽ thêm http://developer.chrome.com/extensions/xhr.html để những người khác tìm thấy. – Jono

Trả lời

24

Hai điều; bạn cần đảm bảo rằng bạn đang tạo ứng dụng/tiện ích đóng gói và không phải là ứng dụng được lưu trữ. Yêu cầu nguồn gốc chéo sẽ không hoạt động với các ứng dụng được lưu trữ. Giả sử bạn có phần được ghim xuống, bạn có thể muốn đặt những điều sau vào quyền của mình: http://*/. Đó là người duy nhất tôi có cho một trong những ứng dụng đóng gói của tôi, và nó không vượt qua những thứ gốc mà không có bất kỳ vấn đề gì.

+3

Bingo! Các hướng dẫn tôi đã làm theo không đề cập đến một từ về thực tế là nó đã được đóng gói để có được cross-origin xmlhttprequest làm việc một cách chính xác. Tôi đoán đây là điều tôi nên biết kể từ khi tôi được sinh ra. Cảm ơn bạn! – matcheek

+1

Có, tôi đã trải qua cùng một thử nghiệm và lỗi để tìm ra. Tài liệu thực sự cần được cập nhật để phản ánh sự khác biệt giữa các ứng dụng được lưu trữ và đóng gói và có thể làm rõ liệu tiện ích mở rộng có giống với một ứng dụng, v.v. –

+4

tiện ích mở rộng được đóng gói và lưu trữ không? –

Các vấn đề liên quan