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 相关文章推荐
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
jQuery实现Tab菜单滚动切换的方法
Sep 21 Javascript
JavaScript常用函数工具集:lao-utils
Mar 01 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
Vue关于数据绑定出错解决办法
May 15 Javascript
浅谈Javascript常用正则表达式应用
Mar 08 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
Angular8引入百度Echarts进行图表分析的实现代码
Nov 27 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
python中二维阵列的变换实例
2014/10/09 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python梯度下降法的简单示例
2018/08/31 Python
python实现简单登陆系统
2018/10/18 Python
Python玩转Excel的读写改实例
2019/02/22 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
super()与this()的区别
2016/01/17 面试题
JAVA代码查错题
2014/10/10 面试题
大学生收银员求职信分享
2014/01/02 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
学习保证书100字
2015/02/26 职场文书
地道战观后感500字
2015/06/04 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript