精华内容
下载资源
问答
  • 两个同名Cookie的问题

    千次阅读 2019-10-30 00:40:43
    Cookie仅仅名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。一般我们设置cookie的方法是用一个同样名字、一个值。这时就一定要搞清楚你要设置...

    问题

    Http请求中出现了两个同名Cookie,导致服务端获取到的错误的信息

    原理

    Cookie不仅仅有名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。一般我们设置cookie的方法是用一个同样名字、一个值。这时就一定要搞清楚你要设置的cookie的域和路径,否则就会产生问题中的情况。

    再次复习一下Cookie的属性

    属性描述
    nameCookie的名称,Cookie一旦创建,名称便不可更改
    valueCookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
    maxAgeCookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。
    secure该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
    pathCookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
    domain可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
    comment该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。
    versionCookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

    Cookie的有效期

    Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。

    如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。

    如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1。

    如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除,

    response对象提供的Cookie操作方法只有一个添加操作add(Cookie cookie)。

    要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。删除时只需要把maxAge修改为0即可。

    从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。

    Cookie的修改、删除

    Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。

    如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。

    注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。

    Cookie的域名

    Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。

    正常情况下,同一个一级域名下的两个二级域名如www.baidu.com和images.baidu.com也不能交互使用Cookie,因为二者的域名并不严格相同。如果想所有baidu.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为.baidu.com

    读者可以修改本机C:\WINDOWS\system32\drivers\etc下的hosts文件来配置多个临时域名来验证domain属性。

    注意:domain参数必须以点(".")开始。另外,name相同但domain不同的两个Cookie是两个不同的Cookie。如果想要两个域名完全不同的网站共有Cookie,可以生成两个Cookie,domain属性分别为两个域名,输出到客户端。

    Cookie的路径

    domain属性决定运行访问Cookie的域名,而path属性决定允许访问Cookie的路径(ContextPath)。例如,如果只允许/sessionWeb/下的程序使用Cookie,可以这么写cookie.setPath("/sessionWeb/")。

    设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾。name相同但path不同的两个Cookie也是两个不同的Cookie。

    页面只能获取它属于的Path的Cookie。例如/session/test/a.jsp不能获取到路径为/session/abc/的Cookie。

    Cookie的安全属性

    HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输很机密的内容是一种隐患。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。设置secure属性为true的代码是cookie.setSecure(true);

    secure属性并不能对Cookie内容加密,因而不能保证绝对的安全性。如果需要高安全性,需要在程序中对Cookie内容加密、解密,以防泄密。

    JavaScript操作Cookie

    Cookie是保存在浏览器端的,因此浏览器具有操作Cookie的先决条件。浏览器可以使用脚本程序如JavaScript或者VBScript等操作Cookie。这里以JavaScript为例介绍常用的Cookie操作。例如下面的代码会输出本页面所有的Cookie。

    由于JavaScript能够任意地读写Cookie,给网站带来安全隐患,W3C标准的浏览器会阻止JavaScript读写任何不属于自己网站的Cookie。换句话说,A网站的JavaScript程序读写B网站的Cookie不会有任何结果。

    部分浏览器支持设置HttpOnly属性,如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。

    展开全文
  • Cookie出现两个同名Key的问题

    万次阅读 2018-05-23 15:34:44
    问题 Http请求中出现了两个同名Cookie,导致服务端获取到的错误的信息原理 Cookie仅仅名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。一般...

    问题

      Http请求中出现了两个同名Cookie,导致服务端获取到的错误的信息


    原理

      Cookie不仅仅有名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。一般我们设置cookie的方法是用一个同样名字、一个值。这时就一定要搞清楚你要设置的cookie的域和路径,否则就会产生问题中的情况。


    再次复习一下Cookie的属性

    属性描述
    nameCookie的名称,Cookie一旦创建,名称便不可更改
    valueCookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码
    maxAgeCookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。
    secure该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
    pathCookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
    domain可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
    comment该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。
    versionCookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范


    Cookie的有效期

      Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。

      如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。

      如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1。

      如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除,

      response对象提供的Cookie操作方法只有一个添加操作add(Cookie cookie)。

    要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。删除时只需要把maxAge修改为0即可。

      从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。


    Cookie的修改、删除

      Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。

      如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。

      注意:修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。


    Cookie的域名

      Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。

      正常情况下,同一个一级域名下的两个二级域名如www.baidu.com和images.baidu.com也不能交互使用Cookie,因为二者的域名并不严格相同。如果想所有baidu.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为.baidu.com

      读者可以修改本机C:\WINDOWS\system32\drivers\etc下的hosts文件来配置多个临时域名来验证domain属性。

      注意:domain参数必须以点(".")开始。另外,name相同但domain不同的两个Cookie是两个不同的Cookie。如果想要两个域名完全不同的网站共有Cookie,可以生成两个Cookie,domain属性分别为两个域名,输出到客户端。


    Cookie的路径

      domain属性决定运行访问Cookie的域名,而path属性决定允许访问Cookie的路径(ContextPath)。例如,如果只允许/sessionWeb/下的程序使用Cookie,可以这么写cookie.setPath("/session/")。

      设置为“/”时允许所有路径使用Cookie。path属性需要使用符号“/”结尾。name相同但domain相同的两个Cookie也是两个不同的Cookie。

      页面只能获取它属于的Path的Cookie。例如/session/test/a.jsp不能获取到路径为/session/abc/的Cookie。


    Cookie的安全属性

      HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输很机密的内容是一种隐患。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。设置secure属性为true的代码是cookie.setSecure(true);                  

      secure属性并不能对Cookie内容加密,因而不能保证绝对的安全性。如果需要高安全性,需要在程序中对Cookie内容加密、解密,以防泄密。


    JavaScript操作Cookie

      Cookie是保存在浏览器端的,因此浏览器具有操作Cookie的先决条件。浏览器可以使用脚本程序如JavaScript或者VBScript等操作Cookie。这里以JavaScript为例介绍常用的Cookie操作。例如下面的代码会输出本页面所有的Cookie。

      <script>document.write(document.cookie);</script>

      由于JavaScript能够任意地读写Cookie,给网站带来安全隐患,W3C标准的浏览器会阻止JavaScript读写任何不属于自己网站的Cookie。换句话说,A网站的JavaScript程序读写B网站的Cookie不会有任何结果。

      部分浏览器支持设置HttpOnly属性,如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。

    展开全文
  • 在一别人的应用中开发,发现每bean在不同的文件中都定义了。但是启动没有问题,且应用正常,比较诡异。看了下日志,发现 2013-12-13 10:26:44,225 [] Catalina-startStop-1 INFO context....

    在一个别人的应用中开发,发现每个bean在不同的文件中都定义了。但是启动没有问题,且应用正常,比较诡异。看了下日志,发现有

    2013-12-13 10:26:44,225 [] Catalina-startStop-1 INFO  context.InheritableListableBeanFactory - Overriding bean definition for bean 'miaoItemUserManager': replacing [**** defined in ServletContext resource [/WEB-INF/classes/beans/brandsale/***.xml]] with [*** defined in ServletContext resource [/WEB-INF/classes/beans/brandsale/***.xml]]

     

     

    根据日志,应该是bean的定义被overriding,所以没有问题。

     

    如果不希望出现这个问题,可以通过下面一篇文章解决:

    spring bean id重复覆盖的问题解决

     

    展开全文
  • Windows是不允许目录之下出现同名文件的,所谓的同名文件也只是看上去像而已。 问题情形: 点击查看,勾选文件拓展名 文件末尾多了空格符,是不同名

    Windows是不允许同个目录之下出现同名文件的,所谓的同名文件也只是看上去像而已。
    问题情形:
    同名文件

    点击查看,勾选文件拓展名

    勾选文件拓展名

    文件末尾多了空格符

    文件末尾多了空格符,是不同名的

    展开全文
  • 但是如果你定义了两个同名的Bean,但是写在了不同的文件里,那么MyEclipse是发现了这种错误的。如果你在其他bean定义中引用了这个重复定义的bean,那么,在你启动服务器的时候会报错,大致是:Can't creat ...
  • 之前看书的时候,页面中如果有两个以上的样式相同最好使用class属性,如果使用id属性就会报错,一直就这么以为着,但是今天试了试不是那么回事? Function Example 10 aaa bbb (function(){ //alert...
  • spring同名bean覆盖问题

    万次阅读 2015-10-22 16:19:04
    2、如果两个bean是在不同的配置文件中,默认情况下,spring会覆盖先前的bean。 在配置文件很多时,如果在启动时,对于同名的bean加载没有异常信息,出现问题后会比较难以定位。 在spring中,处理
  • Shell 命令行,写一自动整理 ~/Downloads/ 文件夹下文件的脚本在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文件夹下面。日积月累,我们的文件会越来越多。手工...
  • 另外一点,可以在不同的c文件中声明同名的全局变量,前提是其中只能c文件中对此变量赋值,此时链接不会出错。 extern和static能同时修饰同一变量。 链接规范,每c/c++的定义都链接规范(linkage)的...
  • Spring同名bean覆盖问题

    千次阅读 2017-08-16 11:49:41
    默认情况下,spring在处理同一个ApplicationContext中名称相同的bean时,分为两种情况处理: 1、如果两个bean是在同一个配置...2、如果两个bean是在不同的配置文件中,默认情况下,spring会覆盖先前的bean。
  • 文件属性及资源文件的使用

    千次阅读 2015-02-07 13:22:41
    Visual Basic和Visual C#的文件都具有4属性:“FileName”、“BuildAcition”、“CustomTool”、”CustomToolNamespace“。 2、CopyToOutputDirectory属性 此属性指定将选定的源文件复制到输出目录所依据的条件。...
  • 关于keil中写的项目0错误0警告但能编译出目标文件的原因 ...1、头文件内不允许定义变量和函数,只能宏、类型、变量的声明、函数的声明。 2、在不同的.c文件中定义了一样的变量或者函数 亦或是同名的 那当文件
  • ln 命令 不允许将硬链接指向目录

    万次阅读 2011-05-04 09:42:00
    链接是操作系统的一种目录结构,今天初学LN命令,获得一提示,“不允许将硬链接指向目录”,主要原因我认为是考虑目录遍历时的死循环问题,相关资料as following   链接———是一种在共享文件和访问它...
  • RT,本人各种情况都遇到过,试过网上的很多方法,自己也总结一下。 ...1.通常删掉是因为正在运行的程序占用它,打开进程管理器,分析是哪个进程和它有关,把那个进程关掉之后再删除文件就可以
  • 因项目需要,要同时部署两个项目,但是对Tomcat的支持度不同,一个需要用Tomcat6, 一个需要用Tomcat7 将两个项目分开跑会出现 java.lang.Exception: Socket bind failed: [730048] ?????????×???(Э?é/???????/???)??...
  • Vue中ESlint配置文件eslintrc.js文件详解

    万次阅读 多人点赞 2018-06-30 10:36:27
    最近在跟着视频敲项目时,代码提示出现很多奇奇怪怪的错误提示,百度了一下是eslintrc.js文件...(这个我更也忍了)tab键能使用,必须换成两个空格;(超级习惯)代码中能存在声明了但未使用的变量;(这...
  • ),在一个同名的.cpp文件里定义 类外函数 的实现!问题完美解决。所以,就算是大神写的书,书上也完全是对的,或者表述的全部都清楚。 那么为什么头文件可以定义成以下形式呢?而不是只申明,定义类体呢? ...
  • 错误: 此上下文中不允许函数定义。

    万次阅读 多人点赞 2018-08-18 11:40:00
    1 为了搞清这问题,我们先来了解一下matlab编译运行代码的几种方式。 在脚本编辑器中编写,全选后右键执行所选内容。使用这种方式编译运行,无非就是将选中的代码一行一行放到命令行中运行,这种方式,便于程序...
  • Spring beanid 同名覆盖问题解决

    千次阅读 2017-09-06 09:34:36
     最近在做公共框架的构建,由于采用了模块化的插件机制,在开发的过程中,发现不同开发人员的spring配置中,出现了两个bean的配置id和实现类名称都一样的情况。 例如下面的bean类: package ...
  • 2.添加该数据库有两种方法找到/Windows/Microsoft.NET/Freamwork/v2.0.50727/aspnet_regsql 直接运行注意:如果是64位的,所以目录 Windows/Microsoft.NET/Freamwork64/v2.0.50727/aspnet_regsql 3.装好数据库和设置...
  • vscode 无法同时打开多个文件? 怎么解决?

    万次阅读 多人点赞 2018-12-18 18:15:59
    问:我每次打开一新的文件都是覆盖原来打开的文件了, 不会新开一标签显示… 怎么解决的呢? 答:你勤劳一点就好了,具体怎么做呢?双击打开另一标签喽!!! 你的是不是这样: 解决办法: ...
  • 在同一作用域内不允许定义同名的多变量。   在一方法内,可以定义和成员变量同名的局部变量或参数,此时成员变量被屏蔽。此时如果想要访问成员变量,可以通过 this 关键字来访问,this 关键字来访问,this ...
  • 注意事项:1.如何使用? - 将代码复制到记事本,另存为bat文件即可使用。2.使用范围? - 出现了同名文件夹EXE病毒的地方都可以使用,... - 如果U盘内1目录下自己的1.exe文件,会被删除,请谨慎使用此批处理。5.需...
  • 注意这里有两情况。比如要把A文件夹复制到B文件夹内。比如A内的文件是: A/ .hidden.txt txt1.txt json.json dir/ txt2.txt 第一种情况:把A文件夹内的所有文件复制到B文件夹内 完毕后,B文件夹的内容和原来A...
  • FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来...
  • 相同文件下如果控件id相同是不允许的,eclipse会报错的,如果不是同在一布局文件中的话就可以,findviewbyid ()找的那个id是你前面用setContentView(R.layout.*)中的xml文件中的id
  • file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines的区别 写文件 write writelines写入多行内容 write和writelines的区别 将标准输出...
  • 怎样在两个局域网内共享一台打印机  怎样在两个局域网内共享一台打印机  我们公司两间办公室,原先布线的时候用一个路由器延伸出多个接口预埋在墙里并做上插头,IP地址是自动分配的,网关是192.168.0.1,但是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,797
精华内容 39,918
关键字:

不允许两个文件同名的情况有