web三种跨域请求数据方法

标签: web 数据 方法 | 发表时间:2013-01-11 13:19 | 作者:penngo
出处:http://www.blogjava.net
以下测试代码使用php,浏览器测试使用IE9,chrome,firefox,safari

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" id="loadjson"></script>
    <script type="text/javascript">
    // 第一种
    // test1.php在服务器设置请允许跨域(注意:IE9测试不通过)
    $.ajax({
           type: 'POST',
           url: 'http://127.0.0.1:8081/test/test1.php',
           data: 'name=penngo',
           dataType: 'json',
           success: function(msg){
              $('#json').html(JSON.stringify(msg));
           }
        });

    /* 
    第二种JSONP:
    在客户端动态注册一个函数function test(data),然后将函数名传到服务器,服务器返回一个test({json})到客户端运行,这样就调用客户端的function test(data),从而实现了跨域,jquery已经支持jsonp
    */
    // test2.php使用jsonp
    $.ajax({
           type: 'GET',
           url: 'http://127.0.0.1:8081/test/test2.php?callback=?',
           data: 'name=penngo',
           dataType: 'jsonp',
           success: function(msg){
              $('#jsonp').html(JSON.stringify(msg));
           }
        });

    /*
    第三种,原理与jsonp类似,web页面上调用js文件时不受跨域影响,
    只要利用<script>标签的src属性,动态加载js方式就能跨域,该方式为异步,通过testjs()回调
    */
    var testjs = function(msg){
         $('#js').html(JSON.stringify(msg));
    }
    $('#loadjson')[0].src = 'http://127.0.0.1:8081/test/test3.php?method=testjs&name=penngo';
    </script>

</head>
<body>
    header跨域:
    <div id="json">
        
    </div>
    <br/>
    jsonp跨域:
    <div id="jsonp">
        
    </div>
    <br/>
    js请求实现跨域:
    <div id="js">
        
    </div>
</body>
</html>

服务器端处理
test1.php
<?php
    header("Access-Control-Allow-Origin: *");
    $name = $_REQUEST['name'];
    $result = array('success'=>1, 'name'=>$name);
    echo json_encode($result);
?>

test2.php
<?php
    $callback = $_REQUEST['callback'];
    $name = $_REQUEST['name'];
    $result = array('success'=>1, 'name'=>$name);
    $jsonData = json_encode($result);
    echo $callback . "(" . $jsonData . ")";
?>

test3.php
<?php
    $method = $_REQUEST['method'];
    $name = $_REQUEST['name'];
    $result = array('success'=>1, 'name'=>$name);
    $jsonData = json_encode($result);
    echo "$method($jsonData);";
?>

IE9测试,页面输出内容
header跨域: 
jsonp跨域: 
{"success":1,"name":"penngo"}
js请求实现跨域: 
{"success":1,"name":"penngo"}
chrome,firefox,safari测试,页面输出内容
header跨域:
{"success":1,"name":"penngo"}
jsonp跨域:
{"success":1,"name":"penngo"}
js请求实现跨域:
{"success":1,"name":"penngo"}


本文链接

相关 [web 数据 方法] 推荐:

HTML5 Web Database 数据库的使用方法

- - 博客园_首页
HTML5 Web Database 数据库的使用方法. //openDatabase方法打开已经存在的数据库,如果不存在将会创建一个数据库,参数分别是 数据库的名称,版本,数据库的描述,和数据大小. var db = window.openDatabase("mydatabase", "1.0", "我的数据库描述", 20000); 数据库的SQL语句的使用方法.

web三种跨域请求数据方法

- - BlogJava_首页
以下测试代码使用php,浏览器测试使用IE9,chrome,firefox,safari.     // test1.php在服务器设置请允许跨域(注意:IE9测试不通过).     第二种JSONP:.     在客户端动态注册一个函数function test(data),然后将函数名传到服务器,服务器返回一个test({json})到客户端运行,这样就调用客户端的function test(data),从而实现了跨域,jquery已经支持jsonp.

Web API设计方法论

- - 博客园_知识库
  英文原文: A Web API Design Methodology.    为 Web 设计、实现和维护 API 不仅仅是一项挑战;对很多公司来说,这是一项势在必行的任务. 本系列 将带领读者走过一段旅程,从为 API 确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在 Web 上维护公共 API.

Web开发常见的几个漏洞解决方法

- - 博客园_知识库
本文主要根据本人项目的一些第三方安全测试结果,以及本人针对这些漏洞问题的修复方案,介绍在这方面的一些经验,希望对大家有帮助.   基本上,参加的安全测试(渗透测试)的网站,可能或多或少存在下面几个漏洞:SQL注入漏洞、跨站脚本攻击漏洞、登陆后台管理页面、IIS短文件/文件夹漏洞、系统敏感信息泄露.   1、测试的步骤及内容.

Web项目性能问题常见定位方法梳理

- - 互联网 - ITeye博客
第一类:请求无响应,浏览器始终处于等待状态. 定位方法:kill -3或者jstack先分析线程堆栈,找到当前block的线程. 常见于:外部接口调用无返回或者网络IO阻塞无响应;死锁;死循环;……. 定位方法(这一类问题普遍比较难定位):.     (1)寻找hs_err_pidxxx.log这样的JVM日志.

用Twitter的cursor方式进行Web数据分页

- yuaz - Tim[后端技术]
本文讨论Web应用中实现数据分页功能,不同的技术实现方式的性能方区别. 上图功能的技术实现方法拿MySQL来举例就是. 不过在看Twitter API的时候,我们却发现不少接口使用cursor的方法,而不用page, count这样直观的形式,如 followers ids 接口. Provide values as returned to in the response body’s next_cursor and previous_cursor attributes to page back and forth in the list..

PouchDB:一款受CouchDB启发的离线Web数据库

- - 博客园_新闻
查看英文原文: PouchDB – a CouchDB-inspired Offline Web Database. PouchDB 是受 Apache CouchDB 启发为 Web 设计的一款占用空间少的数据库. 它尤其适合于需要基于浏览器的可离线使用的存储方案的移动应用. 该数据库可与 CouchDB 同步,也可与在线设备上的其他 PouchDB 同步.

Web软件测试中数据输入的检查清单

- - InfoQ cn
检查清单(Checklist)可以帮测试人员节省时间,因为很多有效的方法并不需要每个测试人员重新发现,前人已经有了充分的总结,并做了大量的有效性验证,其次,检查清单可以帮助测试人员避免遗漏,人的记忆是有局限的,难免会有遗漏的地方,通过检查清单检查可以有效的防止遗漏. 最近,IBM工程师苏京刚 总结了Web软件测试中数据输入的检查清单,对Web测试人员提供了很好的参考.

cxf+web service(二)代理工厂,安全验证,数据绑定

- - ITeye博客
(二)代理工厂,安全验证,数据绑定. 1.服务端:ServerFactoryBean,JaxWsServerFactoryBean 用于服务端调用.前者针对POJO,后者针对JAX-WS,他们用于生成服务端的EndPoint,暴露出服务接口. 2.客户端:ClientProxyFactoryBean,JaxWsProxyFactoryBean 用于客户端调用.前者针对POJO,后者针对JAX-WS,他用于在客户端生成Web Service的代理proxy.

CSS3 Media Queries 详细介绍与使用方法,Responsive Web Design 必备技术

- - Web前端 - ITeye博客
上一篇我们介绍了 Responsive Web Design之后,这次要来详细介绍CSS3 Media Queries了. 在上一篇中,我们提到 Responsive Web Desig n的实作方式有大半都是利用CSS3 Media Queries来达成. 而顾名思义Media Queries 就是要在支援CSS3 的浏览器中才能正常工作,IE8 以下不支援.