首页 > 教程 > 关键词   >  AJAX跨域最新资讯  > 正文

AJAX跨域访问出现“没有权限”的错误

2010-02-02 14:10 · 稿源:中国站长站综合

下面思考一下:既然不能访问非同域的,只能访问同域的地址了,同域的动态文件怎么获取非同域网页内容呢?我们还是想到的AJAX,只不过这个AJAX是在服务器端执行.

大体思路是这样的:首先将URL用AJAX提交给自己站内的文件,例如getPage.asp---在getPage.asp再次通过服务器XMLHTTP来访问提交来的URL---将获取的内容返回给提交URL的页----显示内容

下面开始组织代码,首先是test.html文件

  • <script type="text/javascript"> 
  • function createobj() {  
  • if (window.ActiveXObject) {  
  •          return new ActiveXObject("Microsoft.XMLHTTP");  
  •      }  
  •      else if (window.XMLHttpRequest) {  
  •          return new XMLHttpRequest();  
  •      }  
  • }  
  •  
  • function getWebPage(url) {  
  •   var oBao=createobj();  
  •   var my_url="getpage.asp?url="+escape(url);  
  •   oBao.open('get',my_url,false);   
  •   oBao.onreadystatechange=function(){  
  •        if(oBao.readyState==4){  
  •             if(oBao.status==200){  
  •               var returnStr=oBao.responseText;  
  •               document.write(returnStr);  
  •             }else{  
  •               document.write("未找到您输入的地址或服务器505错误!");  
  •             }  
  •        }  
  •   }  
  •   oBao.send(null);   
  • }  
  • getWebPage('https://www.google.cn');  
  • </script> 
  •  
  • 再就是getpage.asp文件(注意:要以UTF-8格式保存本文件,防止乱码),如下:  
  •  
  •  
  • <%  
  • response.charset="UTF-8" 
  • reg="\<meta.+ charset= {0,}([^\"" \>\/]*).+\/{0,1}\>" 
  • '函数名:GetResStr  
  • '作用:获取指定URL的HTML代码  
  • '参数:URL-要获取的URL  
  • function GetResStr(URL)  
  • err.clear  
  • dim ResBody,ResStr,PageCode,ReturnStr  
  • Set Http=createobject("MiCROSOFT.XMLHTTP")   
  • Http.open "GET",URL,False   
  • Http.Send()   
  • If Http.Readystate =4 Then   
  •   If Http.status=200 Then  
  •     ResStr=http.responseText  
  •     ResBody=http.responseBody  
  •     PageCode=GetCode(ResStr,reg)  
  •     ReturnStr=BytesToBstr(http.responseBody,PageCode)  
  •     GetResStr=ReturnStr 
  •   End If   
  • End If   
  • End Function  
  •  
  • '函数名:BytesToBstr  
  • '作用:转换二进制数据为字符  
  • '参数:Body-二进制数据,Cset-文本编码方式  
  • Function BytesToBstr(Body,Cset)   
  •   Dim Objstream   
  •   Set Objstream = CreateObject("adodb.stream")   
  •   objstream.Type = 1   
  •   objstream.Mode =3   
  •   objstream.Open   
  •   objstream.Write body   
  •   objstream.Position = 0   
  •   objstream.Type = 2   
  •   objstream.Charset =Cset   
  •   BytesToBstr = objstream.ReadText   
  •   objstream.Close   
  •   set objstream = nothing   
  • End Function  
  •  
  • '函数名:GetCode  
  • '作用:转换二进制为字符  
  • '参数:str-待查询字符串,regstr-正则表达式  
  • Function GetCode(str,regstr)  
  • Dim Reg,serStr  
  • set Regnew RegExp  
  • Reg.IgnoreCase = True 
  • Reg.MultiLine = True 
  • Reg.Pattern =regstr 
  • if Reg.test(str) then '若查询到匹配项  
  •    Set Cols = Reg.Execute(str)  
  •    serStr=Cols(0).SubMatches(0) '使用匹配到的第一个匹配项  
  • else '否则给个默认值gb2312,有点省懒法,如果页面没给出编码格式,想知道确实有点麻烦  
  •    serStr="gb2312" 
  • end if  
  • GetCode=serStr 
  • end function  
  •  
  • dim url:url=request.querystring("url")  
  • response.write GetResStr(URL)  
  • %>
  • 代码组织完毕,实验下,成功提取https://www.google.cn的内容!!!!!这样就可以解决"没有权限"的问题了。 其实,单纯一个getpage.asp一样能获取,不过不能像js那样动态的处理DOM。

    还有一个问题,如果你用第一种方法访问https://www.baidu.com会出现乱码,因为baidu编码为GB2312,而XMLHTTP返回的是UTF-8编码格式。用第二种方法就不会出现这样的问题了,只要定义了编码格式的站点就能正常返回信息(这里不能包括一些使用特别编码的站点)。

    举报

    • 相关推荐
    • 大家在看
    • 销售易罗义谈企业级Agent:宁可精准拒绝,不可错误执行

      文章探讨了企业级智能体(ToB Agent)与通用大模型的本质差异。ToB Agent的核心在于确定性执行力和业务场景深耕,而非创造性发挥。其三大落地门槛是:1)安全合规,需满足数据隔离和跨境合规等刚性需求;2)工程化能力,要将上千个业务API转化为Agent可理解的语义接口;3)价值度量,需建立可衡量的业务成效评估体系。垂直厂商优势在于与业务系统的原生融合,如销售助理Agent能自动将待办事项写入CRM数据流。真正的企业智能化不是替代人类思考,而是将确定性价值深嵌业务毛细血管。

    • 绿舟受邀访问瑞典驻华大使馆,聚焦CBAM共探可持续发展

      绿舟作为跨境碳合规领军企业,受邀访问瑞典驻华大使馆,与瑞典驻华大使馆一等秘书Erik Lindner Olsson及项目官员杨华女士就中瑞企业可持续发展问题展开交流。绿舟联合创始人李智圆先生与绿舟CBAM合规经理崔浩洋先生代表公司出席。双方聚焦CBAM政策与ESG建设,探讨如何助力跨境企业高效合规出海。绿舟已服务超70%头部跨境企业,构建了完善的碳合规体系,推出行业首个一站式碳管理SaaS平台。此次交流深化了中瑞企业在绿色低碳领域的合作共识,为跨境企业应对全球环保政策挑战提供专业支持。

    • SEC专员:SEC没有权限决定比特币ETF

      据Bitcoin.com消息,美国证券交易委员会(SEC)专员Hester Peirce表示,SEC最近越权拒绝了基于比特币基础资产的比特币ETF,她认为SEC的职责是考虑ETF的市场环境,而不是标的资产本身。

    • Jamf发布iOS应用权限报告 并建议用户屏蔽非必要权限的访问

      周四的时候,Jamf 发布了一份有关 App Store 上流行的 iOS 应用程序最常见的“权限类型报告”,并向广大 iPhone 用户提供了避雷建议。Apple Insider 指出,这家苹果移动设备管理(MDM)公司分析了近 10 万款流行的 App Store 应用,且数据源于 250 万的 Wandera 客户。Jamf 发现,许多 iOS 应用都申请了包括照片、相机、位置、麦克风在内的访问权限,尤其是照片 / 视频、购物、以及社交网络等类型的 App 。除了调查数据,Jamf 还提

    • 一文带你看懂ATM的应用权限访问控制能力

      OpenHarmony提供了一种访问控制机制来保护这些数据或功能不被非法使用,这种访问控制机制就是应用权限...应用权限访问控制中所指的应用,按可信程度从高到低的顺序进行划分,可以分为:系统服务、系统应用、系统预置特权应用、同签名应用、系统预置普通应用、持有权限证书的后装应用以及其他普通应用...权限管理模块在TokenID管理模块的基础上,向业务提供应用的权限信息查询、授权、鉴权等服务,管理应用权限的使用记录,构筑ATM的应用权限访问控制功能......

    • 英特尔已开始调查20GB机密文档泄漏 目前认为是有权限人员下载并分享

      8月6日消息,据国外媒体报道,芯片巨头英特尔20GB的内部机密文档,在当地时间周四被公布,英特尔也已在对此进行调查,他们认为是有权限个人下载并分享,并非黑客攻击。英特尔是周四在一份声明中,对20GB机密文档被公布一事进行调查的,他们的20GB内部机密文档,则是在当地时间周四早些时候被公布的。英特尔在声明中表示,他们已在进行调查,泄漏的文档似乎是来自英特尔资源和设计中心,这一中心提供有供英特尔客户、合

    • 一加决定修复一个安全漏洞:避免root权限被轻易访问

      ​今日,许多粉丝发现一加手机存在一个明显由疏忽导致的安全漏洞。过去几年时间里,该公司的智能手机(包括近期发布的一加 5)包含了一个名叫“工程模式”(EngineerMode)的高通测试应用。但据 Engadget 报道,在无需解锁 bootloader 的情况下,该 app 竟然允许用户获得 root 级别的手机访问权限。换言之,某个恶意用户可以在物理接触到的情况下,充分利用手机上的这个漏洞。

    • 轻博客点点网访问出错 官方称正在修复中

      今天中午,中国轻博客点点网访问出错,页面暂时无法访问,目前页面显示:”出了点意外,正在迅速修复中,稍后回来!”具体原因不详,官方称由于服务器机房的机柜出了问题,导致点点网暂时不能正常使用。

    • 谷歌收紧安卓APP访问电话/短信的权限:非默认应用不予放行

      谷歌突然宣布关闭Google+逃不脱和平台的隐私泄露事件有关,况且早就知悉漏洞的谷歌由于过度自信,选择了隐瞒不报。

    • AJAX(XMLHttpRequest)进行跨域请求方法详解

      跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过 style 标签加载外部样式表文件、通过 img 标签加载外部图片、通过 script 标签加载外部脚本文件、通过 Webfont 加载字体文件等等。默认情况下,脚本访问文档

    这篇文章对你有价值吗?

    今日大家都在搜的词:

    热文

    • 3 天
    • 7天