`

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

阅读更多
有一种跨域的业务场景:
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 值是什么,写死?

相关推荐

    完美解决iframe跨域问题

    1. **使用`window.postMessage`**:这是一种现代浏览器支持的跨域通信方式,通过向`window`对象发送消息,可以在不同源的iframe之间传递数据。发送端使用`postMessage(data, targetOrigin)`,接收端监听`message`...

    服务端解决跨域方法

    解决跨域问题有两种主要途径:一种是从前端角度出发,比如使用JSONP技术;另一种是从后端角度出发,在服务器端添加相应的响应头来控制跨域访问。 本文主要探讨的是服务端解决跨域的方法。特别是针对Java服务器端,...

    6种解决跨域的方案

    JSONP是一种较旧的跨域解决方案,适用于支持JavaScript的浏览器。它利用HTML的`&lt;script&gt;`标签可以跨域加载资源的特性。服务器提供一个动态生成的JavaScript函数,将数据包裹在函数调用中返回,客户端预先定义好这个...

    前端常见跨域解决方案(全)

    1. JSONP(JSON with Padding)跨域:JSONP是一种利用`&lt;script&gt;`标签不受同源策略限制的特性来实现跨域请求的方法。它通过动态创建`&lt;script&gt;`标签,并设置其`src`属性为一个动态生成的URL,该URL包含一个回调函数名...

    服务端跨域访问处理.rar

    "服务端跨域访问处理.rar"这个压缩包提供了一种解决方案,主要针对Java服务器环境。接下来,我们将深入探讨跨域访问的问题,以及如何通过描述中的步骤来解决它。 跨域访问是由于浏览器的安全策略——同源策略(Same...

    Ajax跨域访问解决方案

    JSONP是一种早期的跨域解决方案,它是通过动态创建`&lt;script&gt;`标签来加载数据的。因为`&lt;script&gt;`标签不受同源策略限制,可以通过`src`属性指向提供JSON数据的外部服务。服务端返回的数据是一个JavaScript函数调用,...

    Javascript跨域和Ajax跨域解决方案

    1. JSONP(JSON with Padding):JSONP是一种绕过同源策略的方法,它利用`&lt;script&gt;`标签可以跨域加载脚本的特性。通过动态创建`&lt;script&gt;`标签,并设置其`src`属性为一个提供回调函数的URL,服务器返回的不再是纯JSON...

    JS跨域访问解决方案总结

    在实际应用中,开发者可以通过以下几种方式实现跨域: 1. JSONP(JSON with Padding):利用`&lt;script&gt;`标签可以跨域加载脚本的特性,通过动态创建`&lt;script&gt;`标签,指定其`src`属性为服务端提供的带有回调函数的URL...

    WCF服务宿主及其跨域问题解决实例

    在分布式系统开发中,Windows Communication Foundation (WCF) 是Microsoft提供的一种强大的服务导向架构,用于构建高度互操作的服务。本实例主要探讨的是如何在Silverlight应用程序中调用WCF服务,以及解决由此产生...

    Ajax跨域问题及其解决方案.docx

    JSONP(JSON with Padding)是一种用于解决跨域问题的技术手段。它基于`&lt;script&gt;`标签的特殊性,即浏览器允许从任意来源加载`&lt;script&gt;`标签引用的脚本文件。因此,可以通过创建一个`&lt;script&gt;`标签,将其src属性设置为...

    showModalDialog跨域解决例子

    2. **JSONP(JSON with Padding)**:这是一种较旧的跨域解决方案,适用于只支持GET请求的情况。JSONP依赖于动态插入`&lt;script&gt;`标签,通过回调函数接收服务器返回的JSON数据。由于`&lt;script&gt;`标签不受同源策略限制,...

    nginx实现跨域访问遇到的问题

    跨域请求的方式主要有三种:第一种是前端跨域请求,第二种是服务器代理方式,第三种是后端跨域请求。 前端跨域请求的解决方案 --------------------- 前端跨域请求的解决方案是使用方向代理方式来让域名和端口转向...

    解决 springboot跨域请求问题

    另一种解决方案是通过Nginx作为反向代理服务器。Nginx可以配置为将前端和后端的请求路由到相应的服务器,从而隐藏真实的服务器地址,同时也解决了跨域问题。在Nginx配置文件中,你可以添加一个新的location块来代理...

    Jquery跨域Ajax请求测试

    JSONP(JSON with Padding)是一种规避同源策略的方法,它通过动态创建 `&lt;script&gt;` 标签来加载服务端返回的JavaScript代码,该代码会调用一个预先定义好的回调函数并传递数据。 以下是一个简单的jQuery跨域Ajax请求...

    前端后端跨域问题

    JSONP是一种绕过同源策略限制的技术,通过将JSON数据包裹在一个函数调用中实现跨域请求。例如: ```javascript callback({"name":"name1"}); ``` 其中,`callback`是事先定义好的函数名,用作接收返回数据。JSONP的...

    前端跨域原理以及跨域解决方案.docx

    CORS 是一种更为灵活且强大的跨域解决方案,它允许服务端通过设置特定的HTTP头部来指定哪些源可以访问其资源。 **原理**: 服务端需要设置`Access-Control-Allow-Origin`头部来允许跨域请求。 **示例**: - 在Node....

    js跨域问题小结

    1. JSONP(JSON with Padding):这是一种早期的跨域解决方案,通过动态创建`&lt;script&gt;`标签来引入一个带有回调函数的JavaScript文件。由于浏览器允许不同源的脚本嵌入,JSONP利用了这个特性来实现跨域数据交互。但是...

    ajax跨域实例

    JSONP(JSON with Padding)是一种用于跨域操作的技术,它可以突破浏览器的同源策略限制。JSONP 的工作原理是,客户端在请求时带上一个 callback 参数,服务端在响应时将数据包装在这个 callback 函数中,并返回给...

    解决Silverlight跨域访问问题

    在IT行业中,Silverlight是一种基于浏览器的插件技术,它允许开发者创建丰富的用户界面和交互式的Web应用程序。然而,由于安全限制,Silverlight默认不允许跨域访问,这在尝试访问不同源的服务时会引发问题。本篇...

    Vue 3.x+axios跨域方案的踩坑指南

    CORS允许服务器指定允许哪些源(域名)访问其资源,是一种更为可靠和持久的跨域处理方案。配置CORS通常在服务器端进行,比如在Node.js中使用`cors`中间件,或在Nginx中设置适当的HTTP头。 在学习或使用Vue3.x和...

Global site tag (gtag.js) - Google Analytics