【问题标题】:back and forth cross-origin communication with bookmarklet与书签的来回跨域通信
【发布时间】:2012-12-28 01:34:51
【问题描述】:

我想制作一个书签,用户可以添加它以在浏览网站时点击。单击小书签会抓取一些页面内容并将其发送到 myserverapi.com

myserverapi.com 然后将回复发送回小书签,然后小书签将结果显示给用户(不会让他们离开他们单击小书签的页面)。用户确认某事,然后数据再次发送回 myserverapi.com

这可能吗?

我知道 JSONP,但据我所知,它仅适用于检索数据:我想知道是否可以以某种方式对信息进行编码并以来回方式发送到服务器。

谢谢!


啊,在这个用例中,CORS 可以工作,因为我可以控制服务器。 无论如何,我想不出需要来回将数据发送到可能“不愿意”的服务器的场景,反之亦然。

【问题讨论】:

    标签: javascript ajax jsonp bookmarklet


    【解决方案1】:

    如果您有 CORS,为什么不直接将数据发布到服务器?看: How to get a cross-origin resource sharing (CORS) post request working

    【讨论】:

      【解决方案2】:

      这个问题已经回答,但如果你不能使用 CORS,这里是答案:

      我知道 JSONP,但据我所知,它仅适用于检索数据:我想知道是否可以以某种方式对信息进行编码并以来回方式发送到服务器。

      你是如此接近,答案就在你的掌握之中。

      您可以通过以下两种方式之一向服务器发送数据:

      1.) 最简单的方法是使用 GET。您的 JSONP 脚本可能类似于 server/jsonp.php?data=antyhing+you+want。所以这基本上与使用 AJAX 与同一个域通信的方式相同,但不是使用 XMLHttpRequest 来执行 GET,而是附加一个脚本。

      2.) 如果要发送的数据超出 GET 可以处理的范围,您可以使用表单和 iFrame 发布数据。其中一个表单变量应包含一个唯一 ID,以便该 POST 用作键。由于 POST 不能返回任何数据,所以您必须使用 GET 方法来获取与该键对应的响应。因为 POST 是异步的,所以您的 GET 应该轮询服务器,直到服务器成功响应,这取决于服务器是否收到了带有相应密钥的 POST。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 2014-09-14
        • 1970-01-01
        相关资源
        最近更新 更多