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的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
document.execCommand()的用法小结
Jan 08 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
Jun 16 jQuery
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
JavaScript面向对象精要(下部)
Sep 12 Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
python实现文件路径和url相互转换的方法
2015/07/06 Python
Python selenium文件上传方法汇总
2020/11/19 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
综治工作汇报材料
2014/10/27 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
windows系统搭建WEB服务器详细教程
2022/08/05 Servers