AJAX跨域的详细介绍(代码示例)

不言
不言 转载
2019-01-11 10:30:10 2868浏览

本篇文章给大家带来的内容是关于AJAX跨域的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

AJAX 的跨域问题,常用的解决方法有两种,简单记录下,详细内容查看参考资料。以下示例自建两个域名测试,www.test.com、www.example.com。

同源策略

同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。

两个页面,如果域名协议端口都相同,即是同源,其间的交互不存在问题。同源策略是很重要的安全机制,但是有些时候需要突破这种机制,这就需要跨域

JSONP

JSONP 是很常用的方法,它是利用 <script> 标签没有跨域限制的原理实现。以下是在 www.test.com 中使用 JQuery 示例

$.ajax( {    
    url:'//www.example.com',
    data:{name:'tom'},    
    type:'get',    
    dataType:'jsonp',
    jsonp: "callback",    
    success:function(data) {    
          console.log(data)  
     }
})

以下是 www.example.com 的 PHP 处理

<?php
$callback = $_GET['callback'];
$name = $_GET['name'];

// 处理数据
$data = md5($name);

echo $callback . '(' . json_encode($data) . ')';

CORS

CORS (Cross-origin resource sharing),跨域资源共享标准允许 Web 应用服务器进行跨域访问控制。相对于 JSONP 只支持 GET ,CORS 支持更多的 HTTP 请求,同时更简单、安全。不过 CORS 可能会存在兼容问题。
以下是在 www.test.com 中发送 AJAX 请求

$.ajax( {    
    url:'//www.example.com',
    data:{name:'tom'},    
    type:'post',    
    dataType:'json',  
    success:function(data) {    
          console.log(data)  
     }
});

www.example.com 的 PHP 处理

<?php
header("Access-Control-Allow-Origin: http://www.test.com");

$name = $_POST['name'];

// 处理数据
$data = md5($name);

echo json_encode($data);

以上就是AJAX跨域的详细介绍(代码示例)的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除