`
renhongchao
  • 浏览: 120963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpservletrequest 添加跨域cookie

 
阅读更多
今天需要在用户登录后添加别的域的cookie,然后网上搜了一下,发现大多数写的都是一样,但是我测试就是不行。由于自己对cookie也不了解,所以只能接着看,然后发现了自己的cookie生成不了的原因。

下面的是我自己贴过来备用的, 原文地址请看http://www.vinceruan.info/front/cross-domain-process-cookie-session/
看一下前面跨域共享cookie的介绍就行。我的设置不了的原因就是如下面所说:在blog.vinceruan.info域下面设置www.vinceruan.info下面的cookie,然后就生成不了,解决办法是将cookie设置到.vinceruan.info下面   .是一定要加的  去掉成功与否没测试过

    浏览器提交的cookie需要满足以下两点:
1.当前域名或者父域名下的cookie
而且
2.当前路径或父路径下的cookie
要满足以上两个条件的cookie才会被提交.
有4个cookie:
cookie1:[name=value, domain=.vinceruan.info path=/]
cookie2:[name=value, domain=blog.vinceruan.info path=/java/]
cookie3:[name=value, domain=www.vinceruan.info path=/]
cookie4:[name=value, domain=blog.vinceruan.info path=/]
当我访问blog.vinceruan.info时,
cookie1可以被提交,因为.vinceruan.info是blog.vinceruan.info的父域名. path路径也一致.
cookie2不能被提交,因为虽然domain是保持一致的,但是path不一致,当前访问的是/, 但是cookie2的path是/java/
cookie3不能被提交,因为虽然path是一致的,但是www.vinceruan.info不是blog.vinceruan.info的父域名.
cookie4可以被提交,因为domain和cookie都严格保持一致.

这里需要注意的是, 在浏览器看来.www.vinceruan.info不是blog.vinceruan.info的父域名,而vinceruan.info才是blog.vinceruan.info的父域名,www.vinceruan.info也算是一个二级域名(这点如果你提交过域名到DNS服务器商的应该会知道,一般我们需要显式提交www.vinceruan.info和vinceruan.info, 否则www.vinceruan.info==vinceruan.info是不成立的).
所以如果我们需要在所有二级域名下共享islogin=1的cookie,用java代码如下:
Cookie c = new Cookie("islogin","1");
c.setDomain(".vinceruan.info");//注意是以点号开头的.
c.setPath=("/");
response.addCookie(c);

如果要在所有的二级域名下的/java/路径下共享silogin=1的cookie,用java代码如下:
Cookie c = new Cookie("islogin","1");
c.setDomain(".vinceruan.info");//注意是以点号开头的.
c.setPath=("/java/");
response.addCookie(c);

ok, 跨域共享cookie就完成了


分享到:
评论

相关推荐

    java对cookie的操作java对cookie的操作

    最后,使用`response.addCookie(cookie)`将Cookie添加到响应中,发送给客户端。 2. 读取Cookie 在服务器端,我们可以使用HttpServletRequest的`getCookies()`方法来获取客户端发送的所有Cookie。这个方法会返回一个...

    jsp的Cookie讲解与例子

    4. **读取Cookie**:在后续的请求中,`HttpServletRequest`对象提供了`getCookies()`方法,可以获取所有发送回服务器的Cookie。 **JSP中Cookie的使用示例:** ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> /...

    JAVA操作COOKIE.pdf

    - 最后,通过`response.addCookie(cookie)`将Cookie添加到响应中,使其发送到客户端。 2. **读取Cookie** - 从`HttpServletRequest`对象中使用`getCookies()`方法读取所有Cookie,例如`Cookie[] cookies = ...

    servlet读取cookie代码

    在Servlet中,可以通过`HttpServletRequest`对象的`getCookies()`方法来获取客户端发送过来的所有Cookie。如果客户端没有发送Cookie,则该方法返回`null`。 ```java Cookie[] cookies = req.getCookies(); ``` ###...

    java中cookie的使用教程

    在服务器端,我们可以使用`HttpServletRequest`的`getCookies()`方法获取所有Cookie,然后根据名称查找特定的Cookie: ```java Cookie[] cookies = request.getCookies(); for (Cookie c : cookies) { if (c....

    cookie保存并读取用户登录信息

    3. **Cookie的读取**:在JSP或Servlet中,我们可以通过`HttpServletRequest`对象的`getCookies()`方法获取所有Cookie,然后遍历查找我们需要的Cookie: ```jsp Cookie[] cookies = request.getCookies(); for ...

    Java读写cookie源码.docx

    清除Cookie的逻辑是为每个需要清除的Cookie创建一个新的`Cookie`对象,将其值设为`null`,然后使用`HttpServletResponse`的`addCookie()`方法将这些新的Cookie添加到响应中。当浏览器接收到这些值为`null`的Cookie...

    js/java cookie

    当服务器响应时,可以通过HttpServletResponse的`addCookie(Cookie cookie)`方法添加Cookie到响应头中。Cookie对象需要预先设置好名称、值、过期时间等属性。例如: ```java Cookie cookie = new Cookie("name", ...

    ajax跨域请求demo.zip

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置允许所有域名访问 response.setHeader("Access-Control-Allow-Origin", "*")...

    Servlet对Cookie和Session的管理源码实例

    Servlet可以通过`HttpServletResponse`对象的`addCookie()`方法添加Cookie,通过`HttpServletRequest`对象的`getCookies()`方法获取Cookie。以下是一个简单的示例: ```java // 创建Cookie Cookie cookie = new ...

    jsp之Cookie自动登录

    - 使用`HttpServletRequest`的`getCookies()`方法获取所有Cookie,查找包含Session ID的Cookie。 - 检查Cookie的有效性和Session ID,如果匹配,则认为用户已登录,直接设置会话状态。 ```java Cookie[] cookies = ...

    08Cookie和Session1

    2. **工作原理**:服务器在响应客户端请求时,通过`response`对象添加Cookie。客户端浏览器接收后,会将Cookie保存在本地。下次请求同一网站时,浏览器会自动将Cookie随请求一起发送回服务器。 3. **查看Cookie**:...

    java和js中cookie的相关操作.pdf

    - **读取Cookie**:在服务器端,使用`HttpServletRequest`的`getCookies()`方法获取所有Cookie。如果不存在任何Cookie,该方法返回null。可以通过循环遍历并比较Cookie的名称来找到特定的Cookie。 ```java ...

    Springboot处理CORS跨域请求的三种方法

    当在控制器类或具体方法上添加此注解时,Spring Boot会自动处理对应的跨域请求。例如: ```java @RestController @CrossOrigin(origins = "http://www.example.com", maxAge = 3600) @RequestMapping("/api") ...

    深入理解session,cookie

    一旦设置好,可以通过`response.addCookie(Cookie cookie)`将Cookie添加到响应中。 举个例子,假设我们有一个Servlet处理 `/testCookie` 请求,当`option`参数为`add`时,Servlet创建并设置一个名为`cool`、值为`...

    CookieUtils

    2. **添加Cookie到响应**: 创建完Cookie后,需要将其添加到HttpServletResponse对象中,以便服务器能够将Cookie发送到客户端。CookieUtils可能有一个类似`addCookie(HttpServletResponse response, Cookie cookie)`...

    JAVA通过Filter实现允许服务跨域请求的方法

    CORS通过在HTTP响应头中添加以下字段来实现跨域: - `Access-Control-Allow-Origin`: 定义了哪些源可以访问资源,可以设置为特定的域名或通配符`*`。 - `Access-Control-Allow-Methods`: 允许的HTTP请求方法,如`...

    详解springboot和vue前后端分离开发跨域登陆问题

    使用 CORS 来解决跨域问题非常简单,我们只需要在 SpringBoot 项目中添加一个过滤器。下面是一个简单的示例代码: ```java @WebFilter @Component public class CorsFilter implements Filter { @Override ...

    java使用webuploader实现跨域上传详解

    而在`doOptions`中,我们除了设置相同的响应头外,还添加了`Access-Control-Allow-Credentials`,表明这个接口不支持携带cookie的请求,因为`*`意味着不允许携带凭证。 注意,设置`Access-Control-Allow-Origin`为`...

    layui-table-cros:layui表格跨域请求

    if ("OPTIONS".equalsIgnoreCase(((HttpServletRequest) servletRequest).getMethod())) { response.setStatus(HttpServletResponse.SC_OK); } else { filterChain.doFilter(servletRequest, servletResponse); ...

Global site tag (gtag.js) - Google Analytics