精华内容
下载资源
问答
  • java带cookie跨域重定向
    千次阅读
    2021-03-07 21:10:00

    我有两个网站www.web1.com和www.web2.com。现在我想在web1中写一个cookie,并通过Response.Redirect写入web2。 如果有效,我想通过这种方法实现一个简单的Sso。 但是,我无法读取web2中的cookie。有人能帮我找出我的代码是否有问题,或者Cookie不能通过这种方式跨域共享。 谢谢:)

    下面的代码:在www.web1.com/Default.aspx

    protected void Page_Load(object sender, EventArgs e)

    {

    HttpCookie ck = new HttpCookie("userid", "00000001");

    ck.Expires = DateTime.Now.AddDays(1);

    ck.Domain = ".web2.com";

    Response.Cookies.Add(ck);

    Response.Redirect("http://www.web2.com/Default.aspx");

    }

    和代码www.web2.com/Default.aspx

    protected void Page_Load(object sender, EventArgs e)

    {

    if (Request.Cookies["userid"] != null)

    {

    lbCookie.Text = Request.Cookies["userid"].Value;

    }

    else

    {

    lbCookie.Text = "No Cookies";

    }

    }

    +0

    你看过这个问题的答案(尤其是@ aleemb的回答)吗? http://stackoverflow.com/questions/939268/cross-domain-cookie-access-or-session?rq=1 –

    +0

    找到这篇文章'http://www.codeproject.com/Articles/106439/Single-Sign- On-SSO-for-cross-domain-ASP-NET-applic' –

    +0

    @Jaya Prakash Rokkam,是的,我读过你提到的文章,我在这里所做的完全是遵循“非常基本的跨域SSO实现模型“。但是,似乎通过重定向传输Cookie不起作用在我的代码:( –

    更多相关内容
  • 作为我正在开展的项目的一部分,我们需要发送跨域请求 . 我有以下电话:$http({url: 'http://192.168.1.1/API/Login',method: "POST",data: {password: $scope.pass},withCredentials: true,cached: false,headers: ...

    作为我正在开展的项目的一部分,我们需要发送跨域请求 . 我有以下电话:

    $http({

    url: 'http://192.168.1.1/API/Login',

    method: "POST",

    data: {

    password: $scope.pass

    },

    withCredentials: true,

    cached: false,

    headers: {

    'Content-Type': 'application/x-www-form-urlencoded',

    'Accept': 'application/json',

    }

    }).then(function successCallback(response) {

    }, function errorCallback(response) {

    });

    当我将请求发送到非原始服务器时,我收到以下响应(来自Wireshark):

    POST /API/Login HTTP/1.1

    Content-Type: application/x-www-form-urlencoded

    Accept: application/json

    Accept-Language: en-US,en;q=0.7,he;q=0.3

    Origin: http://myserver.com

    Accept-Encoding: gzip, deflate

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

    Host: 192.168.1.1

    Content-Length: 21

    Connection: Keep-Alive

    {"password":"1234"}

    HTTP/1.1 200 OK

    Date: Sun, 19 Jun 2016 21:07:52 GMT

    Server: Some server (UNIX)

    Set-Cookie: Session=308333957

    Accept-Ranges: bytes

    Access-Control-Allow-Credentials: true

    Access-Control-Allow-Origin: http://myserver.com

    Content-type: application/json

    Content-Length: 152

    {"key":"abcdefg","name":"Joe","session":"308333957"}

    它在Chrome和FireFox中完美运行,但在Edge上它有一个CORS错误:

    Origin http://myserver.com not found in Access-Control-Allow-Origin header.

    顺便说一句,当登录凭据错误而服务器没有返回'Set-Cookie'时,它工作正常!认为通过使用'withCredentials = true'我将允许在跨域请求中设置cookie,但它没有帮助(仅限Edge) .

    有任何想法吗? Edge中是否存在任何错误?我找不到任何开放的东西 .

    谢谢

    展开全文
  • 跨域解决以及重定向

    千次阅读 2021-02-28 08:02:43
    前言1、跨域的一般解决方式1.1、配置拦截器1.1.1、token在healer传递的时候,一定要这里配置@Component@Slf4jpublic class CORSInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle...

    前言

    1、跨域的一般解决方式

    1.1、配置拦截器

    1.1.1、token在healer传递的时候,一定要这里配置

    @Component

    @Slf4j

    public class CORSInterceptor extends HandlerInterceptorAdapter {

    @Override

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    //添加跨域CORS

    // 服务器不在一起,下面这个跨域是马川 给我的,好用

    String originHeader = request.getHeader("Origin");

    response.setHeader("Access-Control-Allow-Origin", originHeader);

    response.addHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With,accessToken");

    response.addHeader("Access-Control-Allow-Credentials", "true");

    response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");

    return true;

    }

    }

    @Configuration

    public class InterceptorConfig extends WebMvcConfigurerAdapter{

    @Autowired //解决跨域

    private CORSInterceptor corsInterceptor;

    @Override

    public void addInterceptors(InterceptorRegistry registry) {

    registry.addInterceptor(corsInterceptor);

    super.addInterceptors(registry);

    }

    }

    2、解释名词

    2.1、什么是跨域

    请求从一个域发送到了另一个域

    // 跨域请求例子

    https://localhost:8080/api/user

    https://localhost:8081/

    跨域错误

    No 'Access-Control-Allow-Origin' header is present on the requested resource

    当某一条请求通过浏览器发出,浏览器会在请求头部加上该请求来自的域(origin),请求的接收方去判断他是否愿意处理来自这个域的请求,如果愿意就在请求头部加上Access-Control-Allow-Origin:origin,请求回来后,浏览器再去检查这个头部是否包含这个值Access-Control-Allow-Origin ,如果没有就会爆出以上的错误

    2.2、简单请求和非简单请求

    2.2.1、简单请求

    具体是指请求方法是简单方法且请求头是简单头的 HTTP 请求。具体地,

    简单方法包括GET, HEAD, POST。

    简单头不超过以下几个字段:

    Accept,

    Accept-Language,

    Content-Language,

    Content-Type为application/x-www-form-urlencoded, multipart/form-data, text/plain

    举个例子:

    GET /test HTTP/1.1

    Accept: */*

    Accept-Encoding: gzip, deflate, sdch, br

    Origin: http://www.examples.com

    Host: www.examples.com

    对于简单请求,CORS的策略是请求时在请求头中增加一个Origin字段,服务器收到请求后,根据该字段判断是否允许该请求访问。

    解决方案

    1. 如果允许,则在 HTTP 头信息中添加 `Access-Control-Allow-Origin` 字段,并返回正确的结果 ;

    2. 如果不 允许,则不在 HTTP 头信息中添加 `Access-Control-Allow-Origin` 字段

    2.2.2、非简单请求(会引起跨域问题)

    对于非简单请求的跨源请求,浏览器会在真实请求发出前,增加一次OPTION请求,称为预检请求(preflight request)。预检请求将真实请求的信息,包括请求方法、自定义头字段、源信息添加到 HTTP 头信息字段中,询问服务器是否允许这样的操作。

    put,delete方法的ajax请求

    发送json格式的ajax请求

    带自定义头的ajax请求

    举个例子:

    OPTIONS /test HTTP/1.1

    Origin: http://www.examples.com

    Access-Control-Request-Method: DELETE

    Access-Control-Request-Headers: X-Custom-Header

    Host: www.examples.com

    与 CORS 相关的字段有:

    请求使用的 HTTP 方法 Access-Control-Request-Method ;

    请求中包含的自定义头字段 Access-Control-Request-Headers 。

    服务器收到请求时,需要分别对 Origin、Access-Control-Request-Method、Access-Control-Request-Headers 进行验证,验证通过后,会在返回 HTTP头信息中添加 :

    解决方案 :

    Access-Control-Allow-Origin: http://www.examples.com

    Access-Control-Allow-Methods: GET, POST, PUT, DELETE

    Access-Control-Allow-Headers: X-Custom-Header

    Access-Control-Allow-Credentials: true

    2.3、跨域配置

    Access-Control-Allow-Origin: 服务器允许的域名 这里只能设置一个域名,不能设置多个,或者设置为 *

    Access-Control-Allow-Methods: 真实请求允许的方法

    Access-Control-Allow-Headers: 服务器允许使用的字段

    Access-Control-Allow-Credentials: 是否允许用户发送、处理 cookie

    Access-Control-Max-Age: 预检请求的有效期,单位为秒。有效期内,不会重复发送预检请求

    2.4、跨域重定向

    也就是按照我们正常的逻辑走就行了,就是看请求origin的和返回的origin是不是同一个,非简单的请求的preflight如果没有通过,则不会重定向

    对于简单请求并且没有任何 preflight 的情况:浏览器会一直跟随重定向(当然 HTTP 另有规定的除外,如 POST 被 302 时),直到最后一个请求返回或者中间请求的 CORS 验证失败(比如Access-Control-Allow-Origin设置错误)。

    对于简单请求但是浏览器会发起 preflight 的情况(比如 Safari 对 DNT 的处理):因 preflight 后重定向真正的请求会导致 CORS 失败,所以多次重定向是不可行的。

    对于非简单请求:浏览器会直接发起 preflight,后续的重定向都是不允许的因此多次重定向不可行。

    感兴趣的,欢迎添加博主微信

    哈,博主很乐意和各路好友交流,如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,备注您的微信或者其他联系方式。添加博主微信哦。

    请下方留言吧。可与博主自由讨论哦

    微信

    微信公众号

    支付宝

    展开全文
  • 单点登录系统整合了各个应用系统的身份认证。用户在单点登录系统中完成认证后,就可以访问具有访问权限的应用系统。为了减轻单点登录系统的负担,用户...通过使用跨域cookie方法,在两种服务器环境里面实现了这种重定向
  • 原标题:SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程涉及的...

    原标题:SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程

    涉及的关键知识点:

    1、

    跨域redirect实例:

    test.html

    < src="jquery.js">>

    < type="text/java">

    var res=$.ajax({

    type:"get",

    dataType:"jsonp",/*-----------------------*/

    url: "http://api.luojisiwei-inc.com/test/test.php?callback=?",

    crossDomain:true,/*-----------------------*/

    success: function(data){

    alert("success:"+data.name);

    },

    beforeSend:function(){

    },

    complete:function(data,status){

    }

    });

    >

    跟test.html同域名下的test.php

    header("Location:http://video.luojisiwei-inc.com/");//跨域重定向

    http://video.luojisiwei-inc.com/index.php

    echo "aaaaaaaaaa";

    setcookie("vtest","ooooooooooo");//跨域设置cookie

    die;

    访问test.html,在firebug下看到请求的结果

    75315c3764cd2461f65b5abf2d6a1252.png

    客户端先给test.发ajax请求,然后被重定向到http://video.luojisiwei-inc.com下,并且返回一个Set-Cookie的Response,这样就实现了跨域重定向和跨域设置Cookie

    然后浏览器中访问http://video.luojisiwei-inc.com,发现该域名下确实有了个叫vtest的Cookie

    9334c4e79899049796dcd693c02064d1.png

    京东商城跨域设置Cookie实现SSO单点登陆过程

    可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html

    1、点击首页的登陆按钮跳转到京东的登陆中心https://passport.jd.com/new/login.aspx?ReturnUrl=http%3A%2F%2Fwww.jd.com%2F,然后输入用户名、密码验证,验证通过跳转到ReturnUrl指定的地址,也就是京东首页 2、首页通过Jquery.getJSON()方法发起http://passport.jd.com/new/helloService.ashx请求,跨域获取需要跨域设置登陆cookie的应用列表,返回一个Json数据

    53423ea99f38144b3d448a3184d258bb.png

    3、js遍历sso,通过jQuery.ajax()方法对其中的每条数据发起跨域的jsonp请求,我猜测京东的js代码大概是这么写的

    < type="text/java">

    $.ajax({

    type:"get",

    dataType:"jsonp",/*-----------------------*/

    url: "http://sso.jd.com/setCookie?t=sso.minitiao.com&callback=?",/*-----------------------*/

    crossDomain:true,/*-----------------------*/

    success: function(data){

    },

    beforeSend:function(){

    },

    complete:function(data,status){

    }

    });

    >

    请求的结果是这样的:

    4a78e292983971d89b9c85253f375d8f.png

    可以看到返回一个重定向的Response,而且是跨域的重定向,由于发起的是跨域的jsonp请求,所以浏览器会根据返回的重定向url发起一次请求,也就是最后的跨域设置Cookie的请求

    4、浏览器发起sign请求跨域设置Cookie,请求和返回结果如下

    555aaa0227c3d332ef190c4887c148f9.png

    返回的Response header中含有Set-Cookie项,这样就在sso.minitiao.com域名下设置了Cookie,可以打开sso.minitiao.com发现确实有了ceshi3.com这样一个Cookie

    4778c6541cd9d0ace89e05ece1f4d13c.png

    5、至此京东就完成了单点登录的全过程返回搜狐,查看更多

    责任编辑:

    展开全文
  • 跨域共享cookie

    2021-02-27 18:47:34
    1.JSP中Cookie的读写Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。下面是一个jsp中写入读取Cookie的测试...
  • I’ve run into a problem where one of the remote server responses is a 302 redirect that sets a cookie. Here’s an example: server: nginx/0.7.65 date: Wed, 26 Jan 2011 04:42:18 GMT connection: keep-...
  • 1.JSP中Cookie的读写Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。下面是一个jsp中写入读取Cookie的测试...
  • CORS跨域不能携带cookie的问题

    千次阅读 2022-04-30 14:34:13
    网页域名是 www.rocky.com,网页会使用ajax请求sub.rocky.com域名下的一个接口获取数据,奇怪的是,在请求ajax接口时浏览器没有在请求头里cookie。 最后通过网上查资料得知,原来这个ajax请求跨域了,原因是接口...
  • Java跨域共享cookie问题

    2015-04-03 01:47:03
    比如像www.test1.com与www.test2两个完全不同的域 共享一个cookie 怎么实现啊 都看好多天了 都没有一个合适的方法,求来个大神解救啊 。。。。。小弟万分感谢啊!
  • 2.前端ajax配置允许携带cookie(  xhrFields: {withCredentials: true} ),否则无法获取cookie;axios的设置方法,自行百度  $.ajax({  type: 'get',  url: 'http://localhost:8080/user/getUserLog.action',...
  • 添加配置类解决Java跨域访问的问题。
  • java 操作 Cookie 跨域(同顶级域名)

    千次阅读 2017-04-01 14:07:41
    需求:2个二级栏目需要用同一个是否扥登陆的Cookie ...[java] view plain copy Cookie loginCookie = new Cookie("ccUserId",userMap.get("user_id").toString()); loginCookie.setDoma
  • 跨域 cookie丢失
  • 跨域请求无法携带Cookie的问题

    千次阅读 2022-01-06 23:36:12
    跨域登录成功后(自动设置了cookie),后续的其他请求没有自动携带cookie。 解决 cookie的属性介绍:https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookie 当设置 secure=true 时,只有发送 https 请求才会...
  • 当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的...
  • 最近有一个需求,本项目需要做统一身份认证,通过单点登录方式实现。...我们的项目前后端分离,前端使用vue、axios,前端服务端口80,后端使用Java SpingBoot,nginx,服务端口8080。 操作的思路如下: 在浏览器...
  • 转自: ...Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。下面
  • 两个不同主域之间跨域设置cookie

    千次阅读 2022-04-29 17:23:59
    (3)浏览器登录a系统拿到cookie值,然后在a系统网页中cookie值参数调用b系统接口设置b主域cookie值。 1、提供cookie值一方,在网页中以ajax方式调用被设置cookie值方的接口,发送......
  • 注意:url 如果是传全地址例如:http://www.baidu.com cookie失效url要传相对路径:springmvc的login/login.do 这样Cookie不会失效
  • 啥也不说看代码: Map<String, String> map = login.cookies(); for (String key : map.keySet()) { Cookie cookie = new Cookie(key,map.get(key)); cookie.setPath("/");...
  • 谷歌浏览器跨域丢失Cookie问题

    千次阅读 2020-10-23 18:10:36
    当在A系统的界面中点击B系统图标跳转时此时跨域,导致跳转后的界面空白,A系统会向B系统发送一些请求参数,而B系统没有拿到这些参数,导致重定向后的界面空白。 二、分析 2.1、整体调用链路 2.2、复现 这个问题在...
  • 解决重定向丢失cookie问题

    万次阅读 热门讨论 2018-03-02 18:00:22
    java设置cookie,重定向后这个cookie获取不到通过设置domain、path可以获取到这个cookiedomain 是域 path 是访问的路径HttpServletResponse httpServletResponse = FacesUtil.getHttpServletResponse();Cookie ...
  • 最近使用VUE开发前后端分离,登录后,...1.后台servlet过滤器在原有允许跨域基础上增加 response.setHeader("Access-Control-Allow-Credentials", "true");//允许携带cookie 此时Access-Control-Allow-Origin不能.
  • * 页面跨域访问Controller过滤 */ @Override public void addCorsMappings(CorsRegistry registry) { // .allowedHeaders("Access-Control-Allow-Origin:http://localhost:3000") WebMvcC
  • 关于java应用cookie

    2010-05-31 21:36:28
    Cookie cookieUserName = new Cookie("userName", userName); cookieUserName.setMaxAge(60); //Cookie保存时间 //创建用户密码Cookie对象 Cookie cookiePassword = new Cookie("password", password); ...
  • 首先,我们需要知道cookie的作用的域名是domain本身及domain下的所有子域名。 以test.la,login.test.la,article.test.la为例,login.test.la,article.test.la作为test.la的子域名,在跨域共享信息的时候,我们只...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,435
精华内容 2,174
关键字:

java带cookie跨域重定向