0

我想編寫一個Google Chrome擴展程序,可以從我不擁有的網站(www.notmysite.com)發送信息信息到我擁有的網站(www.mysite.com),並在我的網站上用這些信息做一些MySQL查詢。將MySQL查詢發送到我從其他網站擁有的網站(使用Google Chrome擴展程序)

例如,我希望能夠從www.notmysite.com上的HTML中解析出一些JavaScript變量,並將它插入www.mysite.com上的MySQL數據庫中。我從一個www.notmysite.com頁面將XMLHttpRequests轉換爲另一個頁面沒有問題,但是當我嘗試連接到www.mysite.com時遇到了跨域腳本限制。

有沒有辦法解決這個問題?自從我擁有www.mysite.com以後,似乎應該有這個!

(這基本上是刮的問題。我想屏直板刮到數據庫的屏幕。)

+0

在firefox中,您可以使用名爲greasemonkey的插件克服跨域限制。這個插件讓你添加js腳本到頁面並運行它們。 greasemonky提供了一個API將xmlhttprequests發送到其他網站。根據http://www.mychromeaddons.com/chrome-addon-greasemetal-greasemonkey-for-chrome/你可以在chrome中做同樣的事情,但我從來沒有使用它。 – bert 2011-01-12 09:11:48

回答

0

可避免交叉域限制,如果你從後臺頁面(不是從內容腳本運行Ajax調用)並在清單文件中聲明相應的域權限。

+0

謝謝serg。大衛,我沒有嘗試你的建議,所以它可能會工作;我不知道。 – 2011-01-12 21:11:30

1

您可以使用名爲「script tag injection」的技術來解決跨域限制。也就是說,您可以操作文檔以插入<腳本>標籤,該標籤具有指向場外域的「src」屬性以及您希望傳遞的任何查詢字符串參數。

<script src="http://www.mysite.com/someScript?param=value"></script> 

當你注入如上所示插入到文檔中的一個標籤,瀏覽器會打的URL來檢索任何可能存在;你可以在「someScript」中抓住機會來保存傳遞的值,或者你想做的任何其他事情。

幸運的是,你不是第一個遇到這個問題的人,而且大部分的努力工作已經完成。看看jQuery的$.ajax()方法,它內置了對JSONP的支持。這將使您可以輕鬆使用該技術。