`

跨域:一种通过服务端解决跨域的实现

阅读更多
有一种跨域的业务场景:
A域名页面,嵌套B域名页面,B域名页面又想访问A域名的数据,这时候就有跨域了,其中B域名页面请求的时候不会携带A域名要求的登录cookie信息

解决办法:B页面操作请求B域名,携带着B的cookie,然后有B的服务端来请求A获取数据



@RequestMapping("/proxy")
    @ResponseBody
    public String forwardSaveEOrder(HttpServletRequest request) {
        HttpClient qunarHttpClient = new DefaultHttpClient();
        qunarHttpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);

        HttpPost qunarHttpPost = new HttpPost(saveEOrderUrlForForwarding);
        
        qunarHttpPost.setHeader("Cookie", request.getHeader("Cookie"));
        List <NameValuePair> nvps = new ArrayList <NameValuePair>();   
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String parameterName = parameterNames.nextElement();
            nvps.add(new BasicNameValuePair(parameterName, request.getParameter(parameterName)));  
        }
        try {
			qunarHttpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
		} catch (Exception e) {
			logger.error("",e);
		}
        
        try {
        	
            String result = EntityUtils.toString(qunarHttpClient.execute(qunarHttpPost).getEntity());
            return result;
        } catch (Exception e) {
            logger.error("error : while executing post, url : {}", saveEOrderUrlForForwarding,e);
            QMonitor.recordOne(forwardSaveEOrderExceptionMonitorKey);
            return "生单异常";
        } 

    }
0
3
分享到:
评论
2 楼 ronin47 2016-03-10  
应该是跟共享域名思路差不多,根据cookie的key作判断
1 楼 wukele 2016-03-08  
ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY 值是什么,写死?

相关推荐

    jquery中ajax处理跨域的三大方式

    由于JS同源策略的影响,因此js只能访问同域名下的文档。因此要实现跨域,一般有以下几个方法: 一、处理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已经...通过产生一个script标签来实

    详解WebSocket跨域问题解决

    它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很好的实现。我们使用Socket.io,它很好地封装了webSocket接口,提供了更简单、灵活的接口,也对不支持webSocket的浏览器提供了向下...

    python web.py开发httpserver解决跨域问题实例解析

    跨域请求,就是在浏览器窗口中,和某个服务端通过某个 “协议+域名+端口号” 建立了会话的前提下,去使用与这三个属性任意一个不同的源提交了请求,那么浏览器就认为你是跨域了,违反了浏览器的同源策略。...

    PHP下ajax跨域的解决方案之jsonp实例分析

    而jsonp是一种非官方跨域数据交互协议,该协议允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以随意定制自己的函数

    Node服务端框架Express-Sequelize-Mysql模型架构设计封装

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 能学到什么:接口请求、跨域处理、利用Sequelize请求Mysql数据库等,...

    webpack里如何配置反向代理,怎样配置反向代理,webpack配置反向代理(前后端联调),如何用反向代理解决跨域问题

     反向代理解决的就是跨域,在前后端联调的情况下,前端有服务器,后端也有服务器,那么联调时,就存在跨域问题 三、反向代理的原理  通过伪造请求使得http请求为同源的,然后将同源的请求发送到反向代理服务器上,...

    5种处理js跨域问题方法汇总

    前两天碰到一个跨域问题的处理,使用jsonp可以解决。 最近再整理了一下: 1.jsonp。  ajax请求,dataType为jsonp。这种形式需要请求在服务端调整为返回callback([json-object])的形式。如果服务端返回的是普通json...

    在vue中使用SockJS实现webSocket通信的过程

    最近接到一个业务需求,需要...•如果受到代理服务器的限制,传输层能优雅地从一种方式回退到另一种方式 •尽可能快地建立连接 •客户端只是纯粹的JavaScript,不需要flash •客户端JavaScript必须经过严格的测试 •服务

    JWT-Json Web Token-目前最流行跨域身份验证解决方案

    JWT是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,...

    JSONP 原理

    发生跨域请求时,服务端response的数据会被浏览器拦截住 解决跨域请求的方法有很多种,jsonp就是其中一种 原理就是: 1.通过html元素标签上的 src 属性请求到的资源不会被认为是跨域的 2.script 标签请求到的JS文件资源...

    jquery-jsonp.js

     3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用...

    解决jQuery使用JSONP时产生的错误

    什么是域,简单来说就是协议+域名或地址+端口,3者只要有任何一个不同就表示不在同一个域。跨域,就是在一个域中访问另一个...顾名思义,JSONP是利用JSON作为垫片,从而实现跨域请求的一种技术手段。其基本原理是利用HT

    JSON Web Tokens的实现原理

    JSON Web Tokens简称jwt,是rest接口的一种安全策略。本身有很多的优势: 解决跨域问题:这种基于Token的访问策略可以克服cookies的跨域问题。 服务端无状态可以横向扩展,Token可完成认证,无需存储Session。 系统...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    WebApp 基于浏览器来实现的一种应用 HybridApp 一种可以下载的Native App,其用户界面的全部或者部分元素在嵌入式浏览器组件(WebView之类的)里面运行 优雅降级 一开始就构建站点的完整功能,然后针对浏览器测试和...

    第四章 第二节:后端服务开发.pdf

    基于STM32节点和阿里云IoT平台 的物联网应用开发 系列课程 第四章 服务端的应用开发 课程内容下载、观看 ...前端把相应数据展示在页面上 • 将软件分为前端和后端是一种将软件不同功能的部分相互分离的抽象

    oss-element-upload:一个使用express预先返回签名,前端直传阿里云oss的上传案例

    oss上传文件有两种方式,一种是上传到服务器,服务器传输到oss,清空临时文件,另一种是直接通过用户端传输到oss,服务器只提供签名,并替换。 优势:对用户上传行为没法很好的监控。 config配置 oss bucket配置跨域...

    python-rpc框架,基于ws长连接暴露

    python—rpc框架,基于ws长连接暴露RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如...

    微信小程序之WebSocket

    一方面可以避免轮询带来的连接频繁建立与断开的性能损耗,另一方面数据可以是比较实时的进行双向传输(因为是长链接),而且WebSocket允许跨域通信(这里有个潜在的跨域安全的问题,得靠服务端来解决)。目前除IE外...

    node实现简单的反向代理服务器

    每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Node 来达成 跨域问题是前端开发很常见的问题 解决方案有很多种 ...

    说说JSON和JSONP 也许你会豁然开朗

    又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持WebSocket,因此都不能算是ST2的原生解决方案,原生的只有AJAX。...

Global site tag (gtag.js) - Google Analytics