bookmarklets如何处理跨源请求 - 是否需要cors?

时间:2013-02-16 00:52:50

标签: javascript bookmarklet

我知道书签是什么,这意味着我知道如何创建一个书签,并且它可以访问用户正在浏览的页面。

我不明白的是如何将该页面的信息发送到我的服务器。

当我从书签中对我的服务器进行ajax调用时(假设这是可能的),它如何知道bookmarklet是我的,即不是跨源请求?

或者这甚至可能吗?我需要使用cors吗?

或者我可以使用带有简单ajax调用的书签吗?

我只想从用户所在的任何页面/域中获取一些信息,并将其发送到我的服务器进行处理。

1 个答案:

答案 0 :(得分:2)

  

如何知道书签是我的,即不是交叉原始请求?

服务器不知道。浏览器不关心。代码及其所做的一切都被视为是页面的本机部分。 (您可以告诉服务器端代码您要告诉它的任何内容,但这与此无关。)

  

或者这甚至可能......从用户所在的任何页面/域中获取一些信息,并将其发送到我的服务器?

如果您只需要发送数据,您可以通过表单使用常规旧POST,或通过表单或附加脚本甚至是IMG对象进行GET。要使用表单发布,请创建一个iframe,以便主页的位置在提交时不会更改。

如果您还要获取数据,则有JSONP或AJAX + CORS(特别是Access-Control-Allow-Origin标头)。您甚至不必在最严格的意义上使用JSONP。这只是传递数据的标准。您的服务器可以轻松返回您希望执行的任何JavaScript代码,而不是返回使用JSON参数进行单个函数调用的代码。