zoukankan      html  css  js  c++  java
  • 关于:HTTP Header -> Content-Type: text/plain Cache-Control: no-cache IE浏览器弹出错误下载对话

    下午遇到一个很奇怪的现象,一个网址: http://192.168.1.3/login?action=a&fr=b.com

    注意网址后面的参数形式,action参数在前,最后一个参数值的尾部含有.com

    login程序的代码是这样的:

    pw.println("Content-Type: text/plain");

    pw.println("Cache-Control: no-cache");

    pw.println("Content-Length: " + "abcd".getBytes().length); //内容大小

    pw.println();

    pw.print("abcd"); 
    pw.flush();

    如果有IE浏览器的地址栏里直接输入网址,按回车后,并不会显示abcd,而是会弹出一个下载对话框:

    经过3个小时的测试,发现:

    1. 当Content-Type设置为 text/plain ,同时设置 Cache-Control: no-cache,在IE浏览器上就会出现下载对话框,但在firefox和chrome上可以正常显示abcd

    2. 当Content-Type设置为 text/plain ,同时设置 Cache-Control: private 或 不设置 Cache-Control,在IE浏览器上可以正常显示abcd

    3. 当Content-Type设置为 text/html,同时设置 Cache-Control: no-cache,在IE浏览器上可以正常显示abcd

    4. 在IE浏览器中,前面一个参数是action最后一个参数值是.com,就会出现上面这样的问题,在其它浏览器可以正常显示内容。

    5. 在IE浏览器中,如果把action参数放到最后,把fr参数放到前面,就可以显示出 abcd

    种种迹象表明:

    在ie浏览器中,如果直接把上面的 http://192.168.1.3/login?action=a&fr=b.com复制到地址栏中按回车直接打开的时候:

    1. 如果程序中返回的Content-Type: text/plain 那么HTTP状态码一定要HTTP/1.1 200 OK才行,不然就会出现一个错误的下载对话框,其它浏览器不存在这样的问题
    2. 反之,如果 Content-Type: text/html,那么HTTP状态码可以是其它的各种类型状态码。

    另注:如果用户是从一个链接上点击进入这个网址,则可以正常显示内容,而不会出现像上面那样的错误对话框。

    2011-07-06

  • 相关阅读:
    select&pselect/poll&ppoll/epoll
    软件常见基础问题总结
    FIFO、LRU、OPT这三种置换算法的缺页次数
    Django配置静态文件(CSSjs)及Django调用JS、CSS、图片等静态文件
    Django基础
    Django开发网站(四)
    Django开发网站(二)
    ubuntu1304下安装boa服务器
    Django开发网站(一)
    C语言中的七种排序算法
  • 原文地址:https://www.cnblogs.com/personnel/p/4583078.html
Copyright © 2011-2022 走看看