`
vanadiumlin
  • 浏览: 505478 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

跨域访问的终极解决方案

 
阅读更多
方案一:使用jsonp ,
<script src='/jquery-1.4.2.min.js' type='text/javascript' > </script>

<script>
      jQuery.getJSON("http://61.143.165.67:8088/GameManager/addCount?type=1&jsoncallback=?",
    function(data) {     

    }
);

</script>

方案二:使用p3p0 设置头文件
方案三:使用服务器端语言,例如php
<?
//发送POST请求
function sendPost($url, $data, $timeout = 10) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}

//发送GET请求
function sendGet($url, $timeout = 10) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
方案四:
falsh中的方案
/**
* @author Kinglong
* @version 0.5
*/ 
 
package com.klstudio.upload { 
     
    import flash.display.*; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.external.ExternalInterface; 
    import flash.system.Security;    
 
    public class FlashProxy extends Sprite{  
         
        private var _params:Object; 
        private var _loader:URLLoader; 
        private var _method:String; 
        private var _id:String; 
        private var _parse:Boolean; 
        private var _inited:Boolean; 
        private var _data:String; 
        private var _xml:XML; 
         
        public function FlashProxy(){ 
            Security.allowDomain('*'); 
            _inited = false; 
            _data = ""; 
            _parse = true; 
            _method = URLRequestMethod.POST; 
            _loader = new URLLoader(); 
            configureListeners(_loader); 
        } 
         
        public function load(page:String,params:Object=null):void{ 
            if(!_inited){ 
                showError("FlashProxy还没有初始化!"); 
            } 
            if(page == null || page == undefined){ 
                showError("page参数为必须的!"); 
                return; 
            } 
            var vars:URLVariables = new URLVariables(); 
            vars.tmp = Math.random(); 
            if(params != null){              
                for(var key in params){ 
                    if(key == "tmp"){ 
                        continue; 
                    } 
                    vars[key] = params[key]; 
                } 
            }            
            _loader.dataFormat = URLLoaderDataFormat.TEXT; 
            var request:URLRequest = new URLRequest(page); 
            request.method = _method; 
            request.data = vars; 
            _loader.load(request); 
        } 
         
        public function setParse(value:Boolean):void{ 
            _parse = value; 
        } 
         
        public function setMethod(value:String):void{ 
            if(value == null || value == undefined){ 
                return; 
            } 
            value = StringUtil.trim(value); 
            if(value.toLocaleUpperCase() == URLRequestMethod.POST || value.toLocaleUpperCase() == URLRequestMethod.GET){ 
                _method = value.toLocaleUpperCase(); 
            }            
        } 
         
        public function getData():String{ 
            return _data; 
        } 
         
        private function configureListeners(dispatcher:IEventDispatcher):void { 
            dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
            dispatcher.addEventListener(Event.OPEN, openHandler); 
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
        } 
         
        private function completeHandler(event:Event):void { 
            _data = _loader.data; 
            if(_parse){ 
                try{ 
                    _xml = new XML(_data);                   
                }catch(error:Error){ 
                    _parse = false; 
                    _xml = null; 
                    Tracer.debug("xml解析错误!"); 
                } 
            } 
            ExternalInterface.call(_id+".onComplete"); 
        } 
 
        private function openHandler(event:Event):void { 
            ExternalInterface.call(_id+".onOpen"); 
        } 
 
        private function progressHandler(event:ProgressEvent):void {             
            ExternalInterface.call(_id+".onProgress",event.bytesLoaded,event.bytesTotal); 
        } 
 
        private function securityErrorHandler(event:SecurityErrorEvent):void { 
            showError("读取失败!\n  不能跨域访问,可能是你在web服务端根目录下没有放置crossdomain.xml文件!"); 
        } 
 
        private function httpStatusHandler(event:HTTPStatusEvent):void { 
            showError("读取失败!\n  HTTP错误代码为:"+event.status); 
        } 
 
        private function ioErrorHandler(event:IOErrorEvent):void { 
            showError("读取失败!\n  可能是因为下列原因:\n    1.网络忙,请稍候重试!\n    2.访问的web服务端没有开启!"); 
        } 
         
        public function alert(msg:String):void{ 
            navigateToURL(new URLRequest(msg)); 
        } 
         
        public function showError(msg:String):void{          
            ExternalInterface.call(_id+".onError",msg); 
        } 
    } 
     

分享到:
评论

相关推荐

    jquery 跨域访问问题解决方法(笔记)

    文章引用了一篇博客的解决方案,并按照该博客的方法修改了自己的代码,最终实现了跨域访问服务器动态内容的目的。 在这个过程中,服务器端代码需要特别处理,以便能够返回正确的JSON格式数据,并且包含回调函数的...

    Access-Control-Allow-Origin跨域问题的终极解决,给自己做备份

    本文将深入探讨这个问题,并提供终极解决方案。 一、理解跨域和同源策略 1. 同源策略:同源策略是浏览器为保障用户数据安全而实施的一种安全策略,规定JavaScript只能访问与当前页面同源(协议+域名+端口)的资源...

    关于Ajax跨域问题及解决方案详析

    首先是一个简单的订单系统, 通过访问/loadOrderList, 最终以json串形式返回订单集合. 该项目使用Tomcat发布在7070端口. @RequestMapping(/loadOrderList) @ResponseBody public List&lt;Order&gt; loadOrderList(String ...

    HP OpenView身份管理解决方案白皮书

    无论是用于监控用户访问权限,还是确保企业合规地处理用户隐私数据,抑或是实现跨域的身份联合,HP OpenView的身份管理解决方案都能够提供一套综合性的解决方案,使企业的信息安全管理更加完善。

    详解可跨域的单点登录(SSO)实现方案【附.net代码】

    而可跨域的SSO解决方案则进一步解决了不同域名下的系统认证问题,使得用户跨域使用服务时也能实现统一的身份验证和授权。 本篇文章详细介绍了实现可跨域单点登录的技术方案,并提供了基于.net的代码实例,帮助读者...

    H5 postMessage 实现iframe 跨域传递数据

    HTML5引入了一种新的API,即`postMessage`,它为跨域和跨窗口的数据传递提供了解决方案,同时也被用于Web Workers之间的通信。本文将深入探讨`postMessage`的工作原理,以及如何利用它来实现iframe跨域传递数据。 #...

    Jsonp post 跨域方案

    作者建议可以继续研究这一领域,但同时指出现有的解决方案在效率上并不理想。 通过这篇文章,我们可以了解到JSONP和CORS跨域请求的原理和区别,以及在实际应用中可能遇到的问题和解决方法。尽管JSONP作为一种老旧的...

    JSONWebToken(JWT),服务端信息传输安全解决方案.docx

    ### JSON Web Token (JWT): 服务端信息传输安全解决方案 #### 概述 JSON Web Token (JWT) 是一种开放标准(RFC7519),它提供了一种在各方之间安全地传输信息的方法。JWT 能够确保信息的完整性和来源的真实性,...

    用代理避免ajax跨域请求(手机验证码)

    为了解决这个问题,出现了多种解决方案,其中一种就是使用代理服务器。 代理服务器的基本思想是在客户端(浏览器)和目标服务器之间建立一个中间层。当客户端发起Ajax请求时,它实际上请求的是代理服务器,然后由...

    iframe内容高度 iframe自适应高度终极解决Iframe设置高度后无法缩小问题

    针对`&lt;iframe&gt;`内容高度自适应,上述经典代码提供了一个解决方案。这段JavaScript函数`setIFrameHeight(iframe)`通过获取`&lt;iframe&gt;`内的内容文档(`contentDocument`),然后比较`body`和`documentElement`(HTML根...

    基于Java+EE的跨域单点登录系统的研究与实现

    - **Passport**:微软推出的一套SSO解决方案,主要用于Windows平台。 - **Kerberos**:一种基于票据的认证协议,广泛应用于大型组织。 - **Liberty Alliance**:一个由多个组织共同维护的标准,旨在提供一套通用的...

    微信jssdk在iframe页面失效问题的解决措施

    微信jssdk(JavaScript SDK)是由微信官方提供的一套开发工具包,它允许开发者在网页中调用微信提供的API接口,从而实现...开发者需要灵活运用现有的技术手段,并不断探索新的解决方案,以满足项目需求并最终实现功能。

    详解cookie验证的php应用的一种SSO解决办法

    最终,解决方案是让远程服务器提供一个新的PHP文件,专门用于接收SSO请求。这个新文件会去除原登录文件中的登录按钮判断逻辑,直接处理来自本地应用的请求。 以下是一个简化版的`ssologon.php`示例: ```php ...

    jsonp跨域请求数据实现手机号码查询实例分析

    另外,随着CORS(跨源资源共享)技术的成熟,CORS已经逐渐成为主流的跨域请求解决方案,因此在兼容性更好的现代浏览器中,开发者们更多地会使用CORS。 在实际开发中,实现JSONP跨域请求时需要特别注意以下几点: 1....

    会议记录2021.03.151

    为了解决这个问题,团队可能探讨了多种解决方案,如JSONP、CORS(跨源资源共享)、代理服务器等。JSONP是一种简单的跨域方式,适用于只支持GET请求的API,而CORS则更为强大,允许服务器指定哪些来源可以访问,且支持...

    web文件上传终极版

    "web文件上传终极版"项目显然旨在提供一种高效且美观的解决方案,以满足用户在学习和工作中的文件上传需求。这个项目可能包含一个精心设计的前端界面,能够优雅地处理文件选择、上传进度显示以及文件管理功能。 ...

    智慧气象应用与服务平台建设方案.ppt

    智慧气象应用与服务平台建设方案是针对现代气象服务的智能化需求所提出的综合性解决方案。该方案旨在通过集成先进的信息技术,实现气象业务的科学管理、智能观测、精准预测和普惠服务,同时鼓励持续创新,以提升气象...

    JavaScript三十道经典练习题

    每个练习的"原始代码"代表了初学者可能的初始尝试,而"最终代码"则展示了更优化和专业的解决方案。在实践中不断学习,对照分析两者的差异,将是提升编程水平的有效途径。 总的来说,"JavaScript三十道经典练习题...

    代替OCX Activex 等IE插件的方式

    通过上述步骤,我们可以实现一个基于HTTPS的本地服务器解决方案来替代传统OCX ActiveX插件,该方案不仅支持最新的浏览器,而且具备更高的安全性与兼容性。此外,我们还介绍了如何使用各种工具和技术来完成这一过程,...

Global site tag (gtag.js) - Google Analytics