web三种跨域请求数据方法

web三种跨域请求数据方法
以下测试代码使用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));

}

});

// 第二种

// 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));

}

});

// 使用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"}

时间: 2024-10-13 06:09:13

web三种跨域请求数据方法的相关文章

js跨域请求数据的3种常用的方法

由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求.那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理:1.JavaScript   在原生js(没有jQuery和ajax支持)的情况下,通常客户端代码是这样的(我假设是在localhost:8080的端口下的http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html页面的body标签下面加入以下代码): <script

谈谈跨域请求数据的几种常用的方法

由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求. 那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理: 1.JavaScript 在原生js(没有jQuery和ajax支持)的情况下,通常客户端代码是这样的(我假设是在localhost:8080的端口下的http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html页面的body标签下面加入以下代码): <script

基于.Net Framework 4.0 Web API开发(5):ASP.NET Web APIs AJAX 跨域请求解决办法(CORS实现)

概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题,特别各种APP万花齐放的今天,API的跨域请求是不能避免的. 在默认情况下,为了防止CSRF跨站的伪造攻击(或者是 javascript的同源策略(Same-Origin Policy)),一个网页从另外一个域获取数据时就会收到限制.有一些方法可以突破这个限制,那就是大家熟知的JSONP, 当然这只是

跨域请求数据解决方案整理

转自:http://www.cnblogs.com/xyang/archive/2012/05/18/2507845.html 跨域请求数据解决方案主要有如下解决方法: JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分开说明: 一.JSONP: 直观的理解: 就是在客户端动态注册一个函数 function a(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的 func

Nginx反向代理、CORS、JSONP等跨域请求解决方法总结

由于 Javascript 同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为域名地址(在跨域问题上,域仅仅是通过“ url的首部 ”来识别而不会去尝试判断相同的IP地址对应着两个域或者两个域是否同属同一个IP),之中任意服务端旗下的客户端发起请求其它服务端资源的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源. 但很多时候我们却又不得不

使用jquery实现跨域请求数据

首先处理服务器代码,使返回的数据符合特定的格式,为了方便这里使用了php test.php代码如下 1 <?php 2 $con = mysql_connect("localhost","root","root"); 3 mysql_select_db("test", $con); 4 5 $result = mysql_query("select username,password from user&quo

使用JSONP跨域请求数据

下面代码,可以使用JSONP进行跨域请求数据,Insus.NET记录以下,以备忘记. 使用JSONP跨域请求数据

Access to XMLHttpRequest at &#39;XXX&#39; from origin &#39;XX&#39; has been blocked by CORS policy: No &#39;Access-Control-Allow-Origin&#39; header is present o AJAX跨域请求解决方法

今天出现了一个问题找了好久先看代码: 这可能是个BUG吧插入代码: dataType: 'jsonp', crossDomain: true, 最终: Access to XMLHttpRequest at 'XXX' from origin 'XX' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present o AJAX跨域请求解决方法 原文地址:https://www.cnblogs

javascript跨域请求解决方法总结

javascript中有同源策略,javascript存在跨域通信的问题.典型例子如:Ajax无法直接请求跨域的普通文件,存在跨域无权限访问的问题. 几种常见的解决方法: JSONP  2.HTML5 postMessage 方法  3.document.domain + iframe  4.iframe+location.hash 一.JSONP web页面上只有<script><img><iframe>这些拥有"src"属性的标签是拥有跨域能力的