jquery 跨域访问问题解决方法(笔记)


Posted in Javascript onJune 08, 2011

这两天需要实现三级域名直接url rewrite到网站静态页面,如 http://123.456.789.com/ UrlRewrite到http://www.789.com/news/123.html

说到这里,也许和js跨域访问没有半点关系,在脑海里排列这的问题都是和UrlRewrite相关的。好吧现在URLRewrite一切就绪,直接在浏览器地址栏中输入http://123.456.789.com/ 会发现,这个在地址栏直接通过http://www.789.com/news/123.html来访问的页面出现了异常,网页上的图片和样式还有JS好像都失去了作用。

看看两个地址栏中的URL, 突然拍拍自己脑袋,有点思路了。原来这个页面的源代码中对图片、CSS、JS 都是通过相对路径来请求的。当然这在 直接访问http://www.789.com/news/123.html的路径是不会有问题的,但是当使用http://123.456.789.com/访问后 看看地址栏两个URL 明显路径已经完全不一样了,比如images/1.gif 在1中 相当于请求http://www.789.com/news/1.gif 而再2中变成什么http://123.456.789.com/images/1.gif很显然这个图片你是永远也请求不到。因为这个路径下你永远也找不到这个图片。好了为了简便,我们不用网上别人介绍的很多种方法,就用绝对路径解决吧。好的,一切看起来这么的自然,这么的畅快。但是真正的麻烦还在后边。

一直到这里,好像和我们的标题都不搭噶。别急,问题总是解决一个再冒出第二个。

首先讲讲我这个页面吧,这个页面是通过程序将本来动态呈现的东西进行了静态化,但是静态化页面里边又必须显示一些变化的信息,这里很多人可能会想到使用IFRAME来解决,但是这样的解决办法不是我想使用的,1.IFRAME比起其它方法,效率低,2.IFRAME对爬行蜘蛛不友好。所以我这里最开始是使用JQUERY的load函数还直接去请求动态页面然后将返回来的动态信息显示在静态化页面里。好了,讲到这里可能有些朋友已经知道为什么这篇日记的名字叫“jquery跨域访问问题”了。

首先看看 jquery load函数里我的参数$("#head").load("http://www.cnblogs.com/project/ajax.php"{"Action":"head"}); 当然通过上边的教训 已经将参数换成了$("#head").load("http://www.789.com/project/ajax.php"{"Action":"head"}); 但是还是出现了“jquery.js 138行无权访问”直接跑去查看juqery138行 哄哄原来是load函数这里出问题(没看懂源码,说实话太折磨人了,一堆压缩后的JS代码看得人想死)好吧去网上谷歌一下,有几个人的答案引起了我的注意。他们都说这是JS跨域操作的问题。而本身JS是无法直接跨域操作的。再联系自己三级域名URLRewrite 再想想跨域的问题,三级域名下 所在的域是789 下的456 下的123 而本身请求的是789.com域名下 所以这不是跨域是什么呢?豁然开朗。我确定我找到问题所在了。

继续谷歌,很多人推荐jquery getJson使用回调函数解决,关于原理等解决了再慢慢研究,呵呵继续搜http://blog.ossxp.com/2010/02/462/这篇文章很好给了我很大帮助,直接在自己项目中还是依葫芦画瓢。问题解决!

 html页面 jquery代码

$.getJSON("http://www.789.com/project/ajax.php?Action=head&callback=?", 
function(data){ // 往后台传递的参数1; 
var html = decodeURI(data.str) 
$('#head').html(html); //调用用来显示内容的div 
});

服务器端PHP代码
$str = "<ul> 
this is test 
</ul>"; 
$arr['str'] = $str; 
$json = json_encode($arr); //用Json_encode函数处理php的数组 
echo $_GET['callback']."(".$json.")";

到此通过三级域名URLREWRITE到静态化页面跨域访问服务器动态类容问题圆满解决!
Javascript 相关文章推荐
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
JQuery在光标位置插入内容的实现代码
Jun 18 Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
angular select 默认值设置方法
Jun 23 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
Sep 22 Javascript
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
angular 数据绑定之[]和{{}}的区别
Sep 25 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
精通Javascript系列之数据类型 字符串
Jun 08 #Javascript
精通Javascript系列之Javascript基础篇
Jun 07 #Javascript
精通Javascript系列之数值计算
Jun 07 #Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 #Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 #Javascript
JqGrid web打印实现代码
May 31 #Javascript
16个最流行的JavaScript框架[推荐]
May 29 #Javascript
You might like
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
利用JS实现数字增长
2016/07/28 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python简单分割文件的方法
2015/07/30 Python
PyQT实现多窗口切换
2018/04/20 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
华为C++笔试题
2014/08/05 面试题
高三励志标语
2014/06/05 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
人事任命通知
2015/04/20 职场文书
领导视察通讯稿
2015/07/18 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
Python列表的索引与切片
2022/04/07 Python
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android