首页 > web前端 > js教程 > jQuery AJAX 如何克服跨域通信的同源策略限制?

jQuery AJAX 如何克服跨域通信的同源策略限制?

Mary-Kate Olsen
发布: 2024-12-22 22:23:18
原创
188 人浏览过

How Can jQuery AJAX Overcome Same-Origin Policy Restrictions for Cross-Domain Communication?

jQuery AJAX 跨域通信

由于同源策略限制,跨域 AJAX 请求会遇到限制。当一个域上的客户端脚本尝试访问来自不同域的资源时,通常会由于安全问题而失败。

案例:

考虑 test. php 驻留在本地主机上,而 testserver.php 托管在 Web 服务器上。从 test.php 到 testserver.php 的 AJAX 请求将失败,由于请求的跨域性质,会触发“错误”警报。

解决方案:

为了克服这个限制,JSONP(带有填充的JSON)可以是

jQuery:

$.ajax({
  url: "testserver.php",
  dataType: "jsonp", // Note the lowercase 'p' in JSONP
  success: function (json) {
    // Handle successful response
    alert("Success");
  },
  error: function () {
    alert("Error");
  }
});
登录后复制

PHP:

<?php
$arr = array("element1", "element2", array("element31", "element32"));
$arr['name'] = "response";
echo $_GET['callback'] . "(" . json_encode($arr) . ");";
?>
登录后复制

在 PHP 中,回调函数名通过jQuery 可以通过 $_GET['callback'] 获得。通过以“callbackName('jsonString')”格式回显响应,我们允许 jQuery 解释 JSON 数据。

替代方案:

jQuery 提供了一种简写方法称为 $.getJSON() ,它简化了跨域 AJAX 请求。但是,它需要附加“callback=?”将 URL 作为 GET 参数。 jQuery 自动用它生成的回调方法替换这个占位符。

以上是jQuery AJAX 如何克服跨域通信的同源策略限制?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板