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 相关文章推荐
Jquery图片滚动与幻灯片的实例代码
Apr 08 Javascript
Javascript代码在页面加载时的执行顺序介绍
May 03 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
JavaScript对象学习小结
Sep 02 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 Javascript
原生JS实现匀速图片轮播动画
Oct 18 Javascript
网络传输协议(http协议)
Nov 18 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
手把手带你入门微信小程序新框架Kbone的使用
Feb 25 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桌面中心(一) 创建数据库
2007/03/11 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
js中url对象化管理分析
2017/12/29 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
深入理解Python装饰器
2016/07/27 Python
Python操作csv文件实例详解
2017/07/31 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
python实现ftp文件传输功能
2020/03/20 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
《称象》教学反思
2014/04/25 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Mysql 如何批量插入数据
2021/04/06 MySQL