如何让Ajax使用Bookmarklet并绕过Javascript同源策略?
我正在尝试编写一个Bookmarklet,目标是能够将任何站点X(单击Bookmarklet时它们所在的原始页面)的信息提交到我的站点服务器,同时留在站点X上 理想情况下,我将能够发送一个回应回来,并有它弹出的地方,但这不是必要的 我一直遇到同源策略的问题——从站点X,XMLHttpRequests只能通过站点X的域启动 有人知道解决这个问题的方法吗(或者他们可以给我指一个教程)?一些带有Bookmarklet的Ajax如何让Ajax使用Bookmarklet并绕过Javascript同源策略?,javascript,ajax,xmlhttprequest,bookmarklet,Javascript,Ajax,Xmlhttprequest,Bookmarklet,我正在尝试编写一个Bookmarklet,目标是能够将任何站点X(单击Bookmarklet时它们所在的原始页面)的信息提交到我的站点服务器,同时留在站点X上 理想情况下,我将能够发送一个回应回来,并有它弹出的地方,但这不是必要的 我一直遇到同源策略的问题——从站点X,XMLHttpRequests只能通过站点X的域启动 有人知道解决这个问题的方法吗(或者他们可以给我指一个教程)?一些带有Bookmarklet的Ajax 非常感谢 您可以使用执行跨域ajax请求(使用GET发送数据,并以JSON
非常感谢 您可以使用执行跨域ajax请求(使用GET发送数据,并以JSON形式接收数据)。您加载的bookmarklet可以从主机页将数据发布到服务器。这很奇怪,但只有Javascript受到同源策略的限制。
对另一台服务器进行
GET
或POST
调用可以正常工作
bookmarklet可以在主机页中插入一个隐藏的IFRAME
,带有src
属性,如http://yourdomain.com/listen
然后构建一个表单
,属性为:target
,指向该IFRAME
最后将表格提交给
发布数据
不幸的是,SOP不允许您直接阅读帖子的回复,因为它发生在IFRAME中,并且除了主页之外还有另一个域
但是如果您需要请求的反馈,您的bookmarklet可以使用setInterval
每隔X毫秒轮询一次,并使用询问请求的状态
调用类似以下内容:
http://yourdomain.com/get-post-status?id=2234234&callback=showResult