域名中有下划线导致IE无法在请求中设置cookie

  •   
  • 4318
  • PHP
  • 9
  • super_dodo
  • 2014/11/04

最近想在本地设置一个vhost方便区分本地和线上的环境,就想到用两个域名,本地的和线上的做区分。起初的想法是在域名的末尾重复最后一个字母,也就是 www.dodobook.net 如果是线上的话,本地则配置为 www.dodobook.nett 这样也不会引起冲突。但是用习惯了chrome的浏览器,输入url地址www.dodobook.nett就自动被转换成为了搜索。甚是烦恼。要去除chrome的地址栏搜索需要安装插件或者修改配置源文件,同时也不想失去这个好用的搜索功能,所以想另外的办法。

后面加行不通,则考虑加在前面了。起初的想法是改成类似 my_www.dodobook.net 这样浏览器也能正确的访问,也方面对域名做切割。但是上网一科普,发现这样还是会存在问题,域名中有下划线导致IE无法在请求中设置cookie 这样在登陆等方面都会有大大的问题。虽然很恨IE但是还是不能舍弃IE。那就把域名中的下划线改成中线吧。类似my-www.dodobook.net吧。具体的详细的说明解释,采用下面的某位大神的原文引用过来吧。

wanted_ie_dead

--------------------------------------------

前几天为了开发方便,和一个同事将XX.qq.com的测试站点拆成两个站点,我那个叫XX_hanks.qq.com,进行功能开发,在调试cookie功能的时候,发现IE下cookie没有记住,用httpwatcher check了下,发现response里有set-cookie,但是IE发起请求的时候却没有把这个域名下的cookie内容放到请求里,以为是我的IE8安全性问题,折腾了半天,尝试了IE6等也是同样问题,目录下保存有qq.com域名的cookie,没有XX_hanks.qq.com的cookie,但是请求xx_hanks.qq.com时,连qq.com的cookie也不传了,大窘,鄙视xx_hanks?

后灵机一动,莫非是域名带下划线闹的,遂把域名改成 xx-hanks.qq.com 问题解决,上网google下,很多人也遇到这个问题,由于长期在chrome下开发,一下子就被臭名昭著的IE搞晕了,不过这个问题倒是颇为奇怪,IE如此诡异设计的目的到底是为撒呢?

-----------------------------------------------

项目中用到cookie传递参数到服务器端,用ip localhost等访问均正常,由于项目以后要用域名访问,果断修改hosts文件,添加k_test.com进行域名映射测试,当再次通过IE浏览器打开项目后,悲剧的事情发生了,居然无法登陆,再次用ip 、localhost访问,都正常,百思不得其解,这个问题正正纠结了一下午,试了各种测试,都没有结果,第二天一大早,灵机一动,换了个google浏览器,奇迹发生了,居然可以登陆了,然后再试IE,问题依旧,盯着域名看了半天,想起应该换个域名了,果断去掉下划线,IE能正常访问了,纠结差不多一天的问题终于得到了解决,百度了一下域名下划线,果然IE浏览器确实存在这方面的问题,虽然是一个小小的问题,但纠结了一天,确实很郁闷,谨以此告诫自己以后的人生中多注重细节。

------------------------------------------------

不为明天而烦恼,不为昨天而叹息,只为今天更美好!