ajax实现垮域访问初探

2016-02-19 22:28 19 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐ajax实现垮域访问初探,赶紧看过来吧!

【 tulaoshi.com - Web开发 】

  这个应该归到javascript的安全性问题一般服务器A设置的是不允许别的域的机器B执行B上的ajax调用服务器A上的资源原因,可以举个简单的安全隐患例子:
  假设ajax可以垮域访问,那么我在自己机器上可以写ajax请求Google各类web应用中的资源比如先用firefox研究GMail在登录过程中大量ajax请求的地址以及参数,可以得到用户cookie的验证过程然后写js去跨域获取别的用户的cookie,这样可以绕过用户的GMail密码而登入他人的GMail邮箱

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  那么有了ajax跨域限制,是不是就真的不能做ajax垮域访问了?
  ajax垮域确实不行,但是我们可以中转实现,也就是所谓的代理
  原理很简单,在自己的js跟远程服务器A的资源之间架设一个自己的容器
  可以用asp、php、java、.net等所有可以的动态web语言
  以asp为例(获取热得快网站某个用户的好友列表,返回xml数据格式)

  %
  p = "http://redekuai.com/api/user_friends_xml/funy"
  Response.BinaryWrite ZQcnGet(p)
  Response.Flush
  Function ZQcnGet(url)
  Set Retrieval = CreateObject("Microsoft.XMLHTTP")
  With Retrieval
  .Open "Get", url, False, "", ""
  .Send
  ZQcnGet = .ResponseBody
  End With
  Set Retrieval = Nothing
  End Function
  %
  这段代码保存为一个proxy.asp,然后放到IIS里,这个时候就可以随便找个机器写js了,用ajax请求proxy.asp,最后相当于实现了ajax垮域访问
  php的示例代码更简单
  echo file_get_contents("http://redekuai.com/api/user_friends_xml/funy"");
  ?
  注:php版本需要= 4.3.0

  再给个asp.net(C#)版本的示例代码:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  using System.Net;
  using System.IO;
  using System.Text;
  public partial class ajaxpages: System.Web.UI.Page
  {
      protected void Page_Load(object sender, EventArgs e)
      {
          WebRequest wr = WebRequest.Create("http://redekuai.com/api/user_friends_xml/funy");
          WebResponse wres = wr.GetResponse ();
          Encoding resEncoding = System.Text.Encoding.GetEncoding("utf-8");
          StreamReader sr = new StreamReader(wres.GetResponseStream(), resEncoding);
          string html = sr.ReadToEnd();
          Response.Write(html);
          sr.Close();
          wres.Close();
      }
  }
  分别为proxy.asp proxy.php proxy.aspx
  那么做好代理,实现了自己一般机器(非web服务器)上js垮域访问远程网站资源有什么实际的意义呢?
  要知道,现在的互联网技术已经进入了绝对的Mashup时代
  老美有2k多个公司靠做facebook的APP存活着,国外的这种产业链真的不能在国内发展吗?要知道5年后互联网也会成为中国的基础设施了
  已经有做的比较好的web2.0站点在开放API(又拍、热得快)或者准备开放

来源:https://www.tulaoshi.com/n/20160219/1628402.html

延伸阅读
标签: Web开发
很多人在使用AJAX调用别人站点内容的时候,JS会提示"没有权限"错误,这是XMLHTTP组件的限制-安全起见禁止访问非同域的网站,下面一个例子来访问http://www.google.cn, script type="text/javascript" function createobj() {  if (window.ActiveXObject) {           return new Active...
标签: Web开发
客户端部分: 代码如下: html head meta http-equiv="Content-Type" content="text/html"/ script language="javascript" var ajax; function createAjax() { if(window.ActiveXObject) { try { return new ActiveXObject("Msxm12.XMLHTTP"); } catch(e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } cat...
标签: Web开发
网页制作Webjx文章简介:要解决ajax跨域问题,网上给出的方法有二. 要解决ajax跨域问题,网上给出的方法有二: 1是构建服务器端的代理。简而言之,就是ajax中调用的实质还是本机的url,而服务器端替js去取回远端地址。 2.利用script标记,生成一个标签。在js加载完成后,再执行后续操作。 就是将原来新建xmlHTT...
标签: Web开发
要解决ajax跨域问题,网上给出的方法有二: 1是构建服务器端的代理。简而言之,就是ajax中调用的实质还是本机的url,而服务器端替js去取回远端地址。 2.利用script标记,生成一个标签。在js加载完成后,再执行后续操作。 就是将原来新建xmlHTTPrequest对象的操作改成了新建script标签的操作. 这里给出一个例子: #ajah.js var  Ajah=...
标签: Web开发
代码如下: document.write('DIV id="loadingg"  style="HEIGHT:65px; WIDTH: 205px;POSITION: absolute; Z-INDEX:1000;border:3px #fff solid;text-align:center; font-size:12px; font-family:Arial, Helvetica, sans-serif;color:#660000;background:#222;opacity:.7;-m...

经验教程

998

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部