我想写一个Google Chrome扩展程序,可以从我不拥有的网站(www.notmysite.com)获取信息,将该信息发送到我拥有的网站(www.mysite.com),并且在我的网站上使用该信息进行某种MySQL查询。
例如,我希望能够从www.notmysite.com上的HTML中解析一些javascript变量,并将其插入www.mysite.com上的MySQL数据库中。我将XMLHttpRequests从一个www.notmysite.com页面发送到另一个页面没有问题,但是当我尝试连接到www.mysite.com时遇到了跨域脚本限制。
有解决方法吗?似乎应该有,因为我拥有www.mysite.com!
(这实际上是一个屏幕抓取问题。我想直接屏蔽数据库。)
答案 0 :(得分:1)
您可以使用称为“脚本标记注入”的技术来解决跨域限制。也就是说,您可以操纵文档以插入< script>带有“src”属性的标记,指向异地域,以及您希望传递的任何查询字符串参数。
<script src="http://www.mysite.com/someScript?param=value"></script>
当您将如上所示的标记注入到文档中时,浏览器将点击该URL以检索可能存在的内容;你可以利用“someScript”中的机会来保存传递的值,或者你想做的其他任何事情。
幸运的是,你不是第一个遇到这个问题的人,而且很多艰苦的工作已经完成了。看一下jQuery的$.ajax()方法,该方法内置了对JSONP的支持。这将使您轻松利用该技术。
答案 1 :(得分:0)
如果您从后台页面(而非内容脚本)运行ajax调用并在清单文件中声明相应的域权限,则可以避免跨域限制。