A项目:
<script type="text/javascript">
jQuery(document).ready(function(){
$.ajax({
type : "get",
async:false,
url : "http://www.b.com/user/checkUserName.htm",
dataType : "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"successCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
data: "", //请求数据
timeout:2000,
success:function(data){
if(data.retCode!="" && data.retCode!="1" ){
window.location="${base}/login/ssoLogin.jhtml?data="+data.body.data;
}else{
window.location="${base}/index.jhtml";
}
},
error:function(){
window.location="${base}/index.jhtml";
}
});
});
</script>
1.请求B项目为servlet,获取cookie,checkUserName为:
protected void processGet(HttpServletRequest request,
HttpServletResponse response, ServiceSession serviceSession)
throws Throwable {
AppData data=new AppData();
Map<string object> bodyMap=new LinkedHashMap<string object>();
PrintWriter out = response.getWriter();
response.setContentType("text/javascript");
response.setCharacterEncoding("UTF-8");
try {
String cookieValue = "";
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies) {
if(cookie.getName().equals(Constant.cookieName)) {
cookieValue = cookie.getValue();
break;
}
}
}
response.setHeader("Content-type", "text/javascript");
response.setHeader("Access-Control-Allow-Origin","*"); //支持全域名访问,不安全,部署后需要固定限制为客户端网址
response.setHeader("Access-Control-Allow-Methods","GET,OPTIONS,DELETE"); //支持的http 动作
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //响应头 请按照自己需求添加。
response.setHeader("P3P","CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
if(cookieValue!=""){
data.setRetCode("0");
bodyMap.put("data", cookieValue);
data.setBody(bodyMap);
}else{
data.setRetCode("1");
}
out.print("successCallback("+JSON.toJSONString(data)+")");
} catch (Exception e) {
e.printStackTrace();
}
}
B项目访问A:
<script type="text/javascript">
$(document).ready(function(){
alert(getCookie("FRONT"));
if(getCookie("FRONT")==""){
$.ajax({
type : "get",
async:false,
url : "http://starbhhc.wicp.net/FYJF/ssoLogin/checkUserName.jhtml",
dataType : "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"successCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
data: "", //请求数据
timeout:2000,
success:function(data){
if(data.retCode!="" && data.retCode!="1"){
setCookie("FRONT",data.body.data);
window.location="http://117.39.28.230:8102/user/platformLogin.htm?data="+data.body.data;
}
},
error:function(){
}
});
}
});
function setCookie(name,value)
{
document.cookie=name+'='+value;
}
function getCookie(name)
{
var arr=new Array();
arr=document.cookie.split(";");
var i=0;
for(i=0; i<arr.length;i++)
{
arr2=arr[i].split("=");
if(arr2[0]==name)
{
return arr2[1];
}
}
return '';
}
$(document).ready(function(){
$('.flexslider').flexslider();
})
</script>
A项目为springMVC,获取A的cookie, checkUserName类为:
@RequestMapping(value = "/checkUserName", method = RequestMethod.GET)
public @ResponseBody void checkUserName(HttpServletRequest request,HttpServletResponse response) {
AppData data=new AppData();
Map<string object> bodyMap=new LinkedHashMap<string object>();
String cookieValue = "";
try {
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies) {
if(cookie.getName().equals(Constant.cookieName)) {
cookieValue = cookie.getValue();
break;
}
}
}
response.setHeader("Content-type", "text/javascript");
response.setHeader("Access-Control-Allow-Origin","*"); //支持全域名访问,不安全,部署后需要固定限制为客户端网址
response.setHeader("Access-Control-Allow-Methods","GET,OPTIONS,DELETE"); //支持的http 动作
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //响应头 请按照自己需求添加。
response.setHeader("P3P","CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
if(cookieValue!=""){
data.setRetCode("0");
bodyMap.put("data", cookieValue);
data.setBody(bodyMap);
}else{
data.setRetCode("1");
}
response.getWriter().print("successCallback("+JSON.toJSONString(data)+")");
} catch (IOException e) {
e.printStackTrace();
}
}
相关推荐
跨域限制是浏览器为了安全原因而设置的一种机制,防止恶意网站通过脚本访问其他站点的数据。本文将深入探讨两种主要的跨域解决方案:CORS(Cross-Origin Resource Sharing)和JSONP(JSON with Padding)。 ### ...
"jsonp跨域请求"可能是服务器返回的示例数据,模拟了JSONP的跨域请求过程。 总结,JSONP和CORS是解决JavaScript跨域问题的两种主要方法,它们各有优缺点,适用于不同的场景。JSONP简单易用,但安全性较低;CORS则更...
### 跨域访问解决方案与Cookie处理 在现代Web开发中,跨域问题一直是困扰开发者的一大难题。当浏览器出于安全考虑阻止不同源之间的数据交互时,跨域问题便产生了。为了解决这一问题,并确保在跨域场景下可以正确地...
总结来说,跨域获取Cookie是通过JSONP机制实现的,主要涉及A网站提供接口读取Cookie,B网站通过Ajax请求获取并设置Cookie。这种方法简化了用户在多个关联网站之间的登录流程,但同时也需要考虑安全问题,避免用户...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了浏览器的同源策略限制的漏洞,通过动态创建`<script>`标签来实现跨域请求。这种技术在早期的Web开发中非常常见,特别是在AJAX无法直接进行跨域请求的...
整个流程的关键在于利用了浏览器对同一站点下的Cookie共享机制,以及JSONP解决跨域请求的限制。这种方法的一个潜在安全风险是,如果A网站的`getcookies.php`接口没有做好安全防护,可能会被恶意利用,导致用户信息...
在源码分析层面,开发者需要理解如何在服务器端设置合适的CORS响应头,以及如何在客户端正确构造跨域请求。对于工具,一些现代化的前端构建工具(如Webpack、Rollup等)通常内置了代理服务器功能,可以帮助开发者...
//www.A.com里通过ajax调用www.B.com里的内容时,是跨域访问,需要使用jsonp,为配合其工作需要添加下面两句,生成jsonp返回 context.Response.ContentType = “text/plain”; context.Response.Write(string.Format...
今天,我们主要讨论 jsonp 跨域和 document.domain + iframe 跨域这两种解决方案。 Jsonp 跨域 jsonp 是一种常见的解决方案,通常用于减轻 web 服务器的负载。我们可以通过动态创建 script 标签,请求一个带参数的...
- **浏览器**:自动处理cookie,同时通过JavaScript实现JSONP请求,跨域获取用户信息。 三、安全性考虑 1. **加密令牌**:为了防止中间人攻击,令牌应经过加密处理,只有认证中心能够解密。 2. **时效性**:设置...
因此,即使服务端已经设置了Cookie,前端也无法获取到。 为了解决这个问题,我们可以采用以下几种方法: 1. JSONP(JSON with Padding)方法: JSONP是一种传统的跨域解决方案。通过动态创建script标签,并将其...
综上所述,JSONP是前端跨域请求的一种常见手段,尤其适用于简单的数据获取场景。然而,随着CORS的普及,JSONP在复杂场景下的使用逐渐减少。在实际开发中,根据项目的具体需求选择合适的跨域策略是非常重要的。
总的来说,PHP跨域Cookie共享是通过在主域设置Cookie时指定目标域,并在目标域中正确读取Cookie来实现的。需要注意的是,这可能会带来一些安全风险,因为跨域设置Cookie可能导致敏感信息泄露。因此,务必谨慎使用,...
在IE7浏览器环境下,利用AJAX技术跨域盗取cookie的操作涉及了Web安全性的敏感问题。cookie是服务器为了标识用户身份而存储在用户浏览器中的小文件,通常包含敏感信息,如登录凭证、偏好设置等。跨域问题是指出于安全...
- 客户端:发起Ajax请求时,设置XMLHttpRequest对象的withCredentials属性为true,表示需要携带cookie进行跨域请求。 - 服务器端:在返回的HTTP响应头中添加Access-Control-Allow-Origin、Access-Control-Allow-...
解决跨域问题有多种方式,如JSONP(JSON with Padding)、CORS(Cross-Origin Resource Sharing)和代理服务器。本文将重点介绍通过C#后台服务作为代理,处理跨域MVC服务调用并携带Cookie验证的实现。 【C#后台服务...
本课程将深入探讨如何突破这一限制,实现跨域通信,主要涉及三个关键技术:JSONP、CORS(跨源资源共享)以及它们在HTML中的应用。 首先,让我们理解什么是“跨域”。同源策略规定,一个域下的文档或脚本只能读取...
通过 jQuery 的 ajax 方法,可以设置 dataType 为 jsonp,实现跨域通信。 3)vue.js: 通过 Vue.js 的 jsonp 方法,可以实现跨域通信。 后端 node.js 代码示例: 通过 Node.js 可以创建一个 HTTP 服务器,处理...