Tôi rất tò mò nếu kịch bản sau đây là lỗi trong Chrome, hoạt động như dự kiến hoặc lỗi nhà phát triển.Tiêm tập lệnh nội dung và yêu cầu quyền đối với nguồn gốc chéo
Vì vậy, tôi có phần mở rộng. Trong manifest.json của tôi yêu cầu quyền chéo gốc cho hai trang web:
"permissions": [
"http://www.foo.com/*",
"http://www.bar.com/*"
]
Tôi cũng tuyên bố một kịch bản nội dung:
"content_scripts": [
{
"matches": ["http://www.foo.com/*"],
"js": ["injectedScript.js"]
}
]
Vì vậy, tôi đã chỉ ra rằng tôi muốn tiêm "injectedScript .js "vào tất cả các miền foo.com. "injectedScript.js" trông giống như sau:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange; // Implemented elsewhere.
xhr.open("GET", 'http://www.bar.com/123'), true);
xhr.send();
Bây giờ, khung nội tuyến được thêm vào trang Tiện ích mở rộng của Chrome. Có vẻ như sau:
<iframe src="http://www.foo.com/123"></iframe>
src của khung này phù hợp với mẫu tập lệnh nội dung của tôi. Như vậy, khi khung tải, injected.js.js được tiêm bên trong nó. Nhưng XMLHttpRequest bên trong của injectedScript không thành công.
Bây giờ, điều này khiến tôi tự hỏi hành vi mong đợi là gì. Thật khó chịu khi gặp sự cố CORS khi tôi đã yêu cầu các quyền thích hợp ... nhưng tôi cũng có thể hiểu rằng tôi đang cố gắng truy cập "http://www.bar.com/123" từ nguồn gốc bên ngoài tiện ích mở rộng chrome của tôi ... mặc dù khung nội tuyến được tải vào tiện ích mà tôi có quyền truy cập.
Bất kỳ suy nghĩ nào của bất kỳ ai về vấn đề này?
EDIT: Nếu bạn đang tự hỏi tôi có thể nhận được gì từ quan điểm thực tế - tôi muốn tiêm một số javascript có thể gọi getImageData trên video trong trang được chèn. Tuy nhiên, tôi không thể, bởi vì getImageData nghĩ rằng src của video là dữ liệu bị nhiễm độc. Tôi đã yêu cầu các quyền thích hợp, nhưng nó không nhỏ giọt vào iframe.
UPDATE: Dưới đây là một bức tranh: http://i.imgur.com/PR48HO2.png
Tôi đang đối mặt với cùng một vấn đề. Tôi biết rằng bạn đã tìm ra nguyên nhân và giải quyết nó trong phần mở rộng (không may) của bạn. Bạn có thể chia sẻ giải pháp (bằng cách tự mình thêm câu trả lời) không? –