Web 跨域请求

发布于 2023-10-29 13:52:23 字数 994 浏览 38 评论 0

当客户端请求其他网站的资源的时候,不可避免会产生跨域问题。

一个推荐的标准做法是使用 jsonp 调用, jquery.jszepto.js 或其他库都内建有 jsonp 请求的方式。
jquery 示例:

$.getJSON('http://example.com/page.php?callback=?', function(data) {
    // do something
});

url 后加入参数 callback=? 后, jquery 默认会以 jsonp 方式加载。
处了客户端需要以 jsonp 调用之外,在服务器端还需要构造 json 数据,即接收 callback 值。
PHP 构造示例:

$data = array(
    'a' => 'A',
    'b' => 'B',
);
echo $GET['callback'] . '(' . json_encode($data) . ')';

注: url 中的 callback=? 表示 jquery 指定随机字符串


使用 require.js

对于一些仅仅提供数据或者独立方法(不依赖于其它模块的方法)的模块,可以简单的用如下方式来定义:

define({
  name:"some data"
});

这个和 JSON-P 非常像,但是却有一个显著的优点:它使得 JSON-P 数据可以现在静态文件中,而并不需要动态的回调过程。这也使得内容是可 cache 的,而且是 CDN 友好的。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

寄人书

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

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