jsonp解决跨域

发布时间:2024年01月11日

JSONP(JSON with Padding)是一种解决跨域请求的一种技术手段。它通过动态创建 <script> 标签来实现跨域请求。

具体的步骤如下:

  1. 在客户端创建一个回调函数,该回调函数用于处理服务器返回的数据。

  2. 构造一个包含了回调函数名称的请求,并指定服务器地址和参数。

  3. 在客户端动态创建一个 <script> 标签,将服务器地址和参数作为该标签的 src 属性值。同时将回调函数名称作为请求参数传递给服务器。

  4. 当服务端接收到请求后,将要返回的数据作为回调函数的参数调用。

  5. 客户端接收到数据后,执行回调函数进行数据处理。

需要注意的是,JSONP只支持GET请求,不支持POST请求。

以下是一个简单的示例,演示了JSONP的使用:

// 客户端代码
function handleResponse(response) {
  // 处理服务器返回的数据
  console.log(response);
}

function sendRequest() {
  var script = document.createElement('script');
  script.src = 'http://example.com/api?callback=handleResponse';
  document.body.appendChild(script);
}

// 服务端代码
function handleRequest(req, res) {
  var data = {
    message: 'Hello, JSONP!'
  };
  var callback = req.query.callback;
  res.send(callback + '(' + JSON.stringify(data) + ')');
}

在上述示例中,客户端调用 sendRequest 函数时,会动态添加一个 <script> 标签,其 src 属性指向服务端的地址,并通过 callback 参数指定了回调函数的名称。

服务端收到请求时,将要返回的数据包装在回调函数中返回给客户端,客户端接收到数据后会执行回调函数进行数据处理。

这样就实现了跨域请求。

文章来源:https://blog.csdn.net/song19990524/article/details/135532279
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。