PHP下实现两种ajax跨域的解决方案之jsonp
H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the requested resource.)。
1.兼容IE浏览器的方法,在Ajax请求的时候使用jsonp:
$("#search").click(function() { $.ajax({ type : "GET", url : "http://127.0.0.1/raid/jquery_learning/ajax_learning/php/index.php?number="+$("#keyword").val(), dataType : "jsonp", jsonp : "callback", success : function(data) { if (data.success) { $("#searchResult").html(data.msg); } else { $("#searchResult").html("出现错误"+data.msg); } }, error : function(jqXHR) { alert("发生错误"+jqXHR.status); } }) });
然后在PHP接收和返回的时候也带上jsonp的数据:
function search() { $jsonp = $_GET["callback"];if(!isset($_GET["number"]) || empty($_GET["number"])) { echo '{"success":false,"msg":"参数错误"}'; return ; }global $staff;$number = $_GET["number"]; $result = $jsonp.'({"success":false,"msg":"没有找到员工"})';foreach ($staff as $key => $value) { if($value["number"] == $number) { $result = $jsonp.'({"success":true,"msg":"找到员工'.$value["name"].'"})'; break; } }echo $result; }
2.只提供给支持HTML5的浏览器使用,只需要在PHP的头部加上如下这两句话即可:
例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com。
如果直接使用ajax访问,会有以下错误:
XMLHttpRequest cannot load http://server.runoob.com/server.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://client.runoob.com' is therefore not allowed access.
1、允许单个域名访问
指定某域名(http://client.runoob.com)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
header('Access-Control-Allow-Origin:http://client.runoob.com');
2、允许多个域名访问
指定多个域名(http://client1.runoob.com、http://client2.runoob.com等)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; $allow_origin = array( 'http://client1.runoob.com', 'http://client2.runoob.com' ); if(in_array($origin, $allow_origin)){ header('Access-Control-Allow-Origin:'.$origin); }
3、允许所有域名访问
允许所有域名访问则只需在http://server.runoob.com/server.php文件头部添加如下代码:
//处理跨域
header("Access-Control-Allow-Origin:*"); //*号表示所有域名都可以访问
header("Access-Control-Allow-Method:POST,GET");
转载于:https://www.cnblogs.com/yuan9580/p/11343968.html
PHP下实现两种ajax跨域的解决方案之jsonp相关推荐
- jquery、javascript实现(get、post两种方式)跨域解决方法
jquery.javascript实现(get.post两种方式)跨域解决方法 一.实现get方式跨域请求数据 浏览器端 <script> $(document).ready(fun ...
- PHP下ajax跨域的解决方案之CORS
PHP下ajax跨域的解决方案之CORS 参考文章: (1)PHP下ajax跨域的解决方案之CORS (2)https://www.cnblogs.com/jkko123/p/6294625.html ...
- ajax中cors解决跨域,AJAX 跨域 CORS 解决方案
两种跨域方法 在 Javascript 中跨域访问是比较常见的事情 就像现在比较流行写单页应用,而单页应用在访问 API 的时候就会有跨域的问题 要解决跨域的问题,其实也并不复杂,有两种方案可以选择 ...
- 关于Ajax跨域的解决方案
关于Ajax跨域的解决方案和一些个人理解 Ajax跨域的原因 Ajax跨域的解决方案 Ajax跨域的原因 浏览器限制 跨域(协议.主机名.端口有一个不同就会产生跨域) xhr请求(XMLHttpReq ...
- ajax跨域问题解决方案
今天来记录一下关于ajax跨域的一些问题.以备不时之需. 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性.也就是说,受到请求的 URL 的域必须与当前 Web 页面 ...
- Ajax跨域提交JSON和JSONP
可以直接使用$.getJSON()方法实现跨域请求,参数中必须加上callback,如: var jsonpUrl = 'http://www.test.com/index.php?c=Api_Ord ...
- js ajax 跨域问题 解决方案
什么是跨域问题? 跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下 ...
- ajax跨域情况解决方案,ajax跨域解决方案.docx
ajax跨域解决方案 ajax跨域解决方案 篇一:使用JSONP解决Ajax跨域访问问题 使用JSONP解决Ajax跨域访问问题 JSONP(JSON with Padding)是JSON的一种&qu ...
- ajax跨越html,ajax跨域的解决方案
什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容(参考js的同源策略). 但是我们项目开发过程中,经常会遇到在一个页面的JS代码中, ...
最新文章
- java 包装类可以被继承_【Java基本功】一文了解Java中继承、封装、多态的细节...
- 工作7年,我的10条经验总结
- 洛谷——P1059 明明的随机数
- 并查集(Disjiont Set)
- 3种团队分组适应项目_团队类型
- 关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- ubuntu中安装sqldeveloper和JDK 1.7
- Web前端的状态管理
- 注意了!System.currentTimeMillis() 存在性能问题...
- MySQL:BlackHole
- C++字符串输入输出操作
- java小球反弹_java实现小球碰撞反弹(示例代码)
- pythonsorted降序_【python】 sort、sorted高级排序技巧
- Linux运行权限1009无标题,Linux权限管理练习
- 13-GPIO功能框图
- IDEA 没识别 resources(找不到 resources)
- 微信小程序从零开始开发步骤(三)
- js飞机大战碰撞检测
- 7个免费小巧的软件,让你的电脑更好用
- 计算机英语重点,计算机英语复习重点.doc
热门文章
- 字节面试现场,问我如何高效设计一个LRU
- Android中对同一个TextView设置不同字体样式
- Java里的容器 Collection 简介
- 希尔排序算法图解分析
- python运行外部文件_Python3运行外部.exe文件
- 100 个网络基础知识普及,看完成半个网络高手! 【厦门微思网络】
- Spring Boot Serverless 实战系列“部署篇” | Mall 应用
- 当 Kubernetes 遇到机密计算,阿里巴巴如何保护容器内数据的安全?
- Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
- 从零开始入门 | Kubernetes 中的服务发现与负载均衡