下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一、通过jsonp跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。 比如,有个a.html页面,它里面的代码需要利用ajax获取一个不同域上的json数据,假设这个json数据地址是http://example.com/dat...
JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。当然解决方案也有很多: 1.document.domain+iframe的设置,应用于主域相同而子域不同; 2.利用iframe和location.hash,数据直接暴露在了url中,数据容量和类型都有限 3.Flash LocalConnection, 对象可在一个 SWF 文件中或多个 SWF 文件间进行通信, 只要 在同一客户端就行,跨应用程序, 可以跨域。 window.name 保存数据以及跨域 iframe 静态代理动态传输方案,充分的运...
这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显得尤为重要。根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在google.com域名下的页面内容;甚至不同的子域名之间的页面也不能通过JavaScript代码互相访问。对于Ajax的影响在于,通过XMLHttpRequest实现的Ajax请求,...
代码如下: //获取货号 $.ajax({ url: "http://192.168.1.191/H.ashx", type: "GET", dataType: 'jsonp', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象. jsonp: 'jsoncallback', //要传递的参数,没有传参时,也一定要写上 data: null, timeout: 5000, //返回Json类型 contentType: "application/json;utf-8", //服务器段返回的对象包含name,openid. success: function (result) { ...
获取IP地址,JS也可以获取客户端IP地址啦,大家知道JS不能跨域,所以这里借助了jquery,真的可以实现获取IP地址,代码如下,已通过测试:jQuery(function($){ var url = 'http://chaxun.1616.net/s.phptype=ip&output=json&callback=&_='+Math.random(); $.getJSON(url, function(data){ alert(data.Ip); }); });
做Web开发经常需要面对跨域问题,跨域问题的根源是浏览器安全中的同源策略,比如说,对于http://www.a.com/1.html来说: 1.http://www.a.com/2.html是同源的; 2.https://www.a.com/2.html是不同源的,原因是协议不同; 3.http://www.a.com:8080/2.html是不同源的,原因是端口不同; 4.http://sub.a.com/2.html是不同源的,原因是主机不同。 在浏览器中,、、和这几个标签是可以加载跨域(非同源)的资源的,并且加载的方式其实相当...
场景 假如有两个域名不同的服务器, a.com和b.com, 在b.com/b_return_js.php这个接口里, 可以获取一些数据。 当然,假如是b.com的页面里, 可以使用ajax, 直接请求这个接口, 但如果在a.com的页面里如果请求呢。 b_return_js.php的接口代码:代码如下: $a = array(array(username=>tony, age=>25),array(username=>yimeng, age=>23),array(username=>ermeng, age=>22),array(username=>sanmeng, age=>21), ); shuffle($a); echo v...
什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。代码如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域...
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显得尤为重要。根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在go...
调用web接口,get请求,发现提示:No 'Access-Control-Allow-Origin' header is present on the requested resource. 这个和安全机制有关,默认不允许跨域调用处理手段:使用jsonp格式, ajax请求参数dataType:JSONP。代码如下: $.ajax({url: "http://.......",type: GET,dataType: JSONP,//heresuccess: function (data) {}}); 哎这真是难者不会,会者不难啊,简单的一行代码,就解决了这个大问题。。。。哭~
前两天碰到一个跨域问题的处理,使用jsonp可以解决。(http://www.gxlcms.com/article/57889.htm) 最近再整理了一下: 1.jsonp。ajax请求,dataType为jsonp。这种形式需要请求在服务端调整为返回callback([json-object])的形式。如果服务端返回的是普通json对象。那么调试的时候,在chrome浏览器的控制台会报"Uncaught SyntaxError: Unexpected token"错误;在firefox浏览器的控制台会报"SyntaxError: missing ; before statement...
客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解。由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算是解决了跨域问题。便记录下来,以供查阅。jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的。真实案例:代码如下: $.ajax({ async:false, url: http://www.mysite.com/demo.do, // 跨域URLtype: GET, dataType: j...
由于浏览器(同源策略)限制,JavaScript 跨域的问题,一直是一个颇为棘手的问题。HTML5 提供了跨文档消息传输的功能,在网页文档之间互相接收与发送信息。使用这个功能,不仅同源(域 + 端口号)的 Web 网页之间可以互相通信,还可以在两个不同域名之间实现跨域通信。 跨文档消息传输Cross Document Messaging提供了postMessage方法在不同网页文档之间互相传递数据,支持实时消息传递。现在很多浏览器都将支持这个功能,比如Googl...
之前看到过用jsonp实现跨域,一直没有用到。现在刚好有个东西要到。试过了网上的很多方法,都没有用。最后终于搞清楚了用法,记录一下。 客户端:代码如下: $(document).ready(function(){$.ajax({type: GET, async: false, url: remote_url, dataType: jsonp, jsonp: callback, jsonpCallback: fun,data: {a: b}, sucess: function(json) {alert(json);}}); }); function fun(json) {alert(json);}服务器端 代码如下: header(Cont...
cross.js代码如下: (function(global){global.Cross = {signalHandler: {},on: function(signal, func){this.signalHandler[signal] = func;},call: function(win, domain, signal, data, callbackfunc){var notice = {"signal": signal, "data": data};if(!!callbackfunc){notice["callback"] = "callback_" + new Date().getTime();Cross.on(notice["callback"], callbackfunc);}var noticeStr = JSON.stringify(notice);win.pos...