diigolet 小书签如何解决跨脚本问题?

发布于 2024-10-16 20:58:38 字数 238 浏览 3 评论 0原文

http://www.diigo.com/tools/diigolet

Diigolet 本质上允许您使用书签为网站添加书签。对于我正在制作的小书签,我还需要将用户所在网站的当前 URL 传递到我的服务器。每次我尝试这样做时,都会出现跨脚本错误。

有人知道如何像 diigolet 一样绕过这个吗?

http://www.diigo.com/tools/diigolet

Diigolet essentially allows you to use a bookmarklet to bookmark sites. With the bookmarklet I'm making, I also need to pass the current URL of the site the user is on to my server. Everytime I try this, I get a cross-scripting error.

Does anybody know how to bypass this like the diigolet?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花海 2024-10-23 20:58:38

本质上,它们通过注入脚本标记来解决同源策略使用不同域的 URL 而不是使用 XMLHttpRequest。请注意,这与普通的 JSON 请求不同,因为 JSON 被包装在回调函数中,例如:(

myCallbackFunction(<JSON here>);

这是有效的,因为 JSON 是 JavaScript 对象文字表示法的子集。)

在他们的情况下,他们对回调的名称进行硬编码函数为 diigolet.callback,但存在一个名为 JSONP JavaScript 库例如 jQuery 支持。

在 JSONP 规范下,回调函数的名称通过 GET 请求中的 callback=myCallbackFunction 参数传递到服务器。您的服务器端代码需要适当地处理这个问题,以便能够处理来自 jQuery 的 JSONP 请求。

Essentially, they work around the same-origin policy by injecting a script tag with the different-domain URL rather than using an XMLHttpRequest. Note that this is different from a normal JSON request in that the JSON is wrapped in a callback function, for example:

myCallbackFunction(<JSON here>);

(This works because JSON is a subset of JavaScript's object literal notation.)

In their case, they hardcode the name of the callback function as diigolet.callback, but there exists a specification called JSONP that JavaScript libraries such as jQuery support.

Under the JSONP specification, the name of the callback function is passed to the server via a callback=myCallbackFunction parameter in the GET request. Your server-side code needs to handle this appropriately to be able to handle JSONP requests from jQuery.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文