有一种跨域的业务场景:
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 "生单异常";
}
}
分享到:
相关推荐
1. **使用`window.postMessage`**:这是一种现代浏览器支持的跨域通信方式,通过向`window`对象发送消息,可以在不同源的iframe之间传递数据。发送端使用`postMessage(data, targetOrigin)`,接收端监听`message`...
解决跨域问题有两种主要途径:一种是从前端角度出发,比如使用JSONP技术;另一种是从后端角度出发,在服务器端添加相应的响应头来控制跨域访问。 本文主要探讨的是服务端解决跨域的方法。特别是针对Java服务器端,...
JSONP是一种较旧的跨域解决方案,适用于支持JavaScript的浏览器。它利用HTML的`<script>`标签可以跨域加载资源的特性。服务器提供一个动态生成的JavaScript函数,将数据包裹在函数调用中返回,客户端预先定义好这个...
1. JSONP(JSON with Padding)跨域:JSONP是一种利用`<script>`标签不受同源策略限制的特性来实现跨域请求的方法。它通过动态创建`<script>`标签,并设置其`src`属性为一个动态生成的URL,该URL包含一个回调函数名...
"服务端跨域访问处理.rar"这个压缩包提供了一种解决方案,主要针对Java服务器环境。接下来,我们将深入探讨跨域访问的问题,以及如何通过描述中的步骤来解决它。 跨域访问是由于浏览器的安全策略——同源策略(Same...
JSONP是一种早期的跨域解决方案,它是通过动态创建`<script>`标签来加载数据的。因为`<script>`标签不受同源策略限制,可以通过`src`属性指向提供JSON数据的外部服务。服务端返回的数据是一个JavaScript函数调用,...
1. JSONP(JSON with Padding):JSONP是一种绕过同源策略的方法,它利用`<script>`标签可以跨域加载脚本的特性。通过动态创建`<script>`标签,并设置其`src`属性为一个提供回调函数的URL,服务器返回的不再是纯JSON...
在实际应用中,开发者可以通过以下几种方式实现跨域: 1. JSONP(JSON with Padding):利用`<script>`标签可以跨域加载脚本的特性,通过动态创建`<script>`标签,指定其`src`属性为服务端提供的带有回调函数的URL...
在分布式系统开发中,Windows Communication Foundation (WCF) 是Microsoft提供的一种强大的服务导向架构,用于构建高度互操作的服务。本实例主要探讨的是如何在Silverlight应用程序中调用WCF服务,以及解决由此产生...
JSONP(JSON with Padding)是一种用于解决跨域问题的技术手段。它基于`<script>`标签的特殊性,即浏览器允许从任意来源加载`<script>`标签引用的脚本文件。因此,可以通过创建一个`<script>`标签,将其src属性设置为...
2. **JSONP(JSON with Padding)**:这是一种较旧的跨域解决方案,适用于只支持GET请求的情况。JSONP依赖于动态插入`<script>`标签,通过回调函数接收服务器返回的JSON数据。由于`<script>`标签不受同源策略限制,...
跨域请求的方式主要有三种:第一种是前端跨域请求,第二种是服务器代理方式,第三种是后端跨域请求。 前端跨域请求的解决方案 --------------------- 前端跨域请求的解决方案是使用方向代理方式来让域名和端口转向...
另一种解决方案是通过Nginx作为反向代理服务器。Nginx可以配置为将前端和后端的请求路由到相应的服务器,从而隐藏真实的服务器地址,同时也解决了跨域问题。在Nginx配置文件中,你可以添加一个新的location块来代理...
JSONP(JSON with Padding)是一种规避同源策略的方法,它通过动态创建 `<script>` 标签来加载服务端返回的JavaScript代码,该代码会调用一个预先定义好的回调函数并传递数据。 以下是一个简单的jQuery跨域Ajax请求...
JSONP是一种绕过同源策略限制的技术,通过将JSON数据包裹在一个函数调用中实现跨域请求。例如: ```javascript callback({"name":"name1"}); ``` 其中,`callback`是事先定义好的函数名,用作接收返回数据。JSONP的...
CORS 是一种更为灵活且强大的跨域解决方案,它允许服务端通过设置特定的HTTP头部来指定哪些源可以访问其资源。 **原理**: 服务端需要设置`Access-Control-Allow-Origin`头部来允许跨域请求。 **示例**: - 在Node....
1. JSONP(JSON with Padding):这是一种早期的跨域解决方案,通过动态创建`<script>`标签来引入一个带有回调函数的JavaScript文件。由于浏览器允许不同源的脚本嵌入,JSONP利用了这个特性来实现跨域数据交互。但是...
JSONP(JSON with Padding)是一种用于跨域操作的技术,它可以突破浏览器的同源策略限制。JSONP 的工作原理是,客户端在请求时带上一个 callback 参数,服务端在响应时将数据包装在这个 callback 函数中,并返回给...
在IT行业中,Silverlight是一种基于浏览器的插件技术,它允许开发者创建丰富的用户界面和交互式的Web应用程序。然而,由于安全限制,Silverlight默认不允许跨域访问,这在尝试访问不同源的服务时会引发问题。本篇...
CORS允许服务器指定允许哪些源(域名)访问其资源,是一种更为可靠和持久的跨域处理方案。配置CORS通常在服务器端进行,比如在Node.js中使用`cors`中间件,或在Nginx中设置适当的HTTP头。 在学习或使用Vue3.x和...