精华内容
下载资源
问答
  • 响应头:Content-Disposition 格式:Content-Disposition: attachment; filename=aaa.zip 作用:通知浏览器要以附件下载形式获取数据 要求:动态向浏览输出一张图片,但是不要直接显示,而是以附件下载 设置...
    • 响应头:Content-Disposition
    • 格式:Content-Disposition: attachment; filename=aaa.zip
    • 作用:通知浏览器要以附件下载形式获取数据
    • 要求:动态向浏览输出一张图片,但是不要直接显示,而是以附件下载
    • 设置响应头,通知浏览器以附件下载获取数据
    1. response.setHeader("Content-Disposition","attachment; filename=3.jpg");//文件名字为非中文没有任何问题
    2. response.setHeader("Content-Disposition","attachment; filename=汽车.jpg");//如果是中文就会有问题 (响应头传递中文默认不会进行url编码,所以无法传递中文,需要手动进行url编码(请求体和请求行,响应体这些都传递中文数据会自动进行url编码
    • 手动url编码不同的浏览器不一样
    1. ie浏览器进行url编码
    2. 其他浏览器进行base64编码
    • 固定代码段(可直接拷贝) 
         String fileName="汽车.jpg";
            String ua = request.getHeader("User-Agent");
            boolean IE_LT11 = ua.contains("MSIE"); // IE11以下版本
            boolean IE11 = ua.contains("rv:11.0) like Gecko"); // IE11
            boolean Edge = ua.contains("Edge"); // win10自带的Edge浏览器
            // 如果是微软的浏览器,直接进行UTF-8编码
            if (IE_LT11 || IE11 || Edge) {
                fileName = URLEncoder.encode(fileName, "UTF-8");
                // java的编码方式和浏览器有略微的不同:对于空格,java编码后的结果是加号,
                // 而浏览器的编码结果是%20,因此将+替换成%20, 这样浏览器才能正确解析空格
                fileName = fileName.replace("+", "%20");
            }
            // 标准浏览器使用Base64编码
            else {
                Base64.Encoder encoder = Base64.getEncoder();
                fileName = encoder.encodeToString(fileName.getBytes("utf-8"));
                // =?utf-8?B?文件名?= 是告诉浏览器以Base64进行解码
                fileName = "=?utf-8?B?" + fileName + "?=";
            }
    		 response.setHeader("Content-Disposition","attachment; filename="+fileName);

     

    • 案例: 
    @WebServlet(name = "ContentDispositionServlet", urlPatterns = "/ContentDispositionServlet")
    public class ContentDispositionServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            /*
            * 响应头:Content-Disposition
            * 格式:Content-Disposition: attachment; filename=aaa.zip
            * 作用:通知浏览器要以附件下载形式获取数据
            * */
    
            //要求:动态向浏览输出一张图片,但是不要直接显示,而是以附件下载
            //设置响应头,通知浏览器以附件下载获取数据
            //response.setHeader("Content-Disposition","attachment; filename=3.jpg");//文件名字为非中文没有任何问题
            //response.setHeader("Content-Disposition","attachment; filename=汽车.jpg");//如果是中文就会有问题
            //响应头传递中文默认不会进行url编码,所以无法传递中文,需要手动进行url编码(请求体和请求行,响应体这些都传递中文数据会自动进行url编码)
            //手动url编码不同的浏览器不一样
            //      1.ie浏览器进行url编码
            //     2.其他浏览器进行base64编码
            String fileName="汽车.jpg";
            String ua = request.getHeader("User-Agent");
            boolean IE_LT11 = ua.contains("MSIE"); // IE11以下版本
            boolean IE11 = ua.contains("rv:11.0) like Gecko"); // IE11
            boolean Edge = ua.contains("Edge"); // win10自带的Edge浏览器
            // 如果是微软的浏览器,直接进行UTF-8编码
            if (IE_LT11 || IE11 || Edge) {
                fileName = URLEncoder.encode(fileName, "UTF-8");
                // java的编码方式和浏览器有略微的不同:对于空格,java编码后的结果是加号,
                // 而浏览器的编码结果是%20,因此将+替换成%20, 这样浏览器才能正确解析空格
                fileName = fileName.replace("+", "%20");
            }
            // 标准浏览器使用Base64编码
            else {
                Base64.Encoder encoder = Base64.getEncoder();
                fileName = encoder.encodeToString(fileName.getBytes("utf-8"));
                // =?utf-8?B?文件名?= 是告诉浏览器以Base64进行解码
                fileName = "=?utf-8?B?" + fileName + "?=";
            }
    		
            response.setHeader("Content-Disposition","attachment; filename="+fileName);
    
            String realPath = getServletContext().getRealPath("img/3.jpg");
            System.out.println("realPath="+realPath);
            InputStream inputStream = new FileInputStream(realPath);
            byte[] bytes = new byte[1024];
            int length=-1;
            while((length=inputStream.read(bytes))!=-1){
                //将读取到的内容输出到浏览器
                response.getOutputStream().write(bytes,0,length);
            }
            //关闭流
            inputStream.close();
        }
    }
    

     

    展开全文
  • Http请求的响应头中设置编码格式

    千次阅读 2021-01-11 13:51:08
    设置编码格式 HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); response.headers().set("Content-Type", "application/json;charset=utf-8"); Content-Type字段 简介: MediaType,即是...

    使用Netty提供的Http服务,org.jboss.netty.handler.codec.http.HttpResponse

     

    设置编码格式

    HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
    
    response.headers().set("Content-Type", "application/json;charset=utf-8");

    Content-Type字段

    简介:

    MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

    常见的媒体格式类型如下:

    •     text/html : HTML格式
    •     text/plain :纯文本格式      
    •     text/xml :  XML格式
    •     image/gif :gif图片格式    
    •     image/jpeg :jpg图片格式 
    •     image/png:png图片格式

       以application开头的媒体格式类型:

    •    application/xhtml+xml :XHTML格式
    •    application/xml     : XML数据格式
    •    application/atom+xml  :Atom XML聚合格式    
    •    application/json    : JSON数据格式
    •    application/pdf       :pdf格式  
    •    application/msword  : Word文档格式
    •    application/octet-stream : 二进制流数据(如常见的文件下载)
    •    application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

       另外一种常见的媒体格式是上传文件之时使用的:

    •   multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

    参考文档

    https://www.cnblogs.com/klb561/p/10090540.html

     

    展开全文
  • springboot响应信息编码配置

    千次阅读 2018-04-22 19:02:35
    spring boot 与spring mvc不同,在web应用中,默认的编码格式为UTF-8,而spring mvc的默认编码格式为iso-8859-1,在spring mvc中,如果设置编码格式需要在spring配置文件中加入: &lt;mvc:annotation-driven&...

    spring boot 与spring mvc不同,在web应用中,默认的编码格式为UTF-8,而spring mvc的默认编码格式为iso-8859-1,在spring mvc中,如果设置编码格式需要在spring配置文件中加入:

    <mvc:annotation-driven>
            <mvc:message-converters register-defaults="true">
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                  <constructor-arg value="UTF-8" />
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

    但是在springboot中默认是utf-8,如果没有特殊需求,该编码不需要修改。如果要强制其他编码格式,spring boot提供三种设置方式
    1. 通过在application.properties中设置

    spring.http.encoding.charset=iso-8859-1
    1. 自定义StringHttpMessageConverter的Bean
    @Bean 
    public StringHttpMessgeConverter stringHttpMessgeConverter(){
        return new StringHttpMessgeConverter(Charset.forName("Utf-8");
    }
    
    1. 实现WebMvcConfigurer,并重写addInterceptors
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
    }
    

    有些文档可能推荐继承WebMvcConfigurerAdapter,然后复写其中方法即可,但是从spring5.0开始,包括spring boot 2.0不在建议继承WebMvcConfigurerAdapter,而是直接实现WebMvcConfigurer,该接口中方法使用了java8中方法默认实现

    展开全文
  • 1. 响应编码  * 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文,一定乱码  * 在使用response.getWriter()之前可以使用response....

    1. 响应编码
      * 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文,一定乱码
      * 在使用response.getWriter()之前可以使用response.setCharaceterEncoding()来设置字符流的编码为gbk或utf-8,当然我们通常会选择utf-8。这样使用response.getWriter()发送的字符就是使用utf-8编码的。但还是会出现乱码!因为浏览器并不知道服务器发送过来的是什么编码的数据!这时浏览器会使用gbk来解码,所以乱码!
      * 在使用response.getWriter()之前可以使用response.setHeader("Content-type","text/html;charset=utf-8")来设置响应头,通知浏览器服务器这边使用的是utf-8编码,而且在调用setHeader()后,还会自动执行setCharacterEncding()方法。这样浏览器会使用utf-8解码,所以就不会乱码了!
      * setHeader("Content-Type", "text/html;charset=utf-8")的快捷方法是:setContentType("text/html;charset=utf-8)。
    2. 请求编码
      * 客户端发送给服务器的请求参数是什么编码:
        客户端首先要打开一个页面,然后在页面中提交表单或点击超链接!在请求这个页面时,服务器响应的编码是什么,那么客户端发送请求时的编码就是什么。
      * 服务器端默认使用什么编码来解码参数:
        服务器端默认使用ISO-8859-1来解码!所以这一定会出现乱码的!因为iso不支持中文!
      * 请求编码处理分为两种:GET和POST:GET请求参数不在请求体中,而POST请求参数在请求体中,所以它们的处理方式是不同的!
      * GET请求编码处理:
        > String username = new String(request.getParameter("iso-8859-1"), "utf-8");
        > 在server.xml中配置URIEncoding=utf-8
      * POST请求编码处理:
        > String username = new String(request.getParameter("iso-8859-1"), "utf-8");
        > 在获取参数之前调用request.setCharacterEncoding("utf-8");

    展开全文
  • spring设置相应头编码

    千次阅读 2017-04-12 16:26:04
    增加produces属性配置 @RequestMapping(value = "", method = RequestMethod.GET,produces="text/plain;charset=UTF-8")
  • response设置响应编码

    千次阅读 2017-12-01 17:47:49
    charset=UTF-8”)不仅发送到浏览器的内容会使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。所以总能正常显示中文2.response.setCharacterEncoding(“UTF-8”)仅仅是发送的浏览器的内容是UTF-8编码的,...
  • 通信原理课程,部分响应系统编解码,包括预编码-相关编码-模2判决,用JAVA实现,有图形编辑,包。
  • 后台:response.setHeader("FileName", URLEncoder.encode(fileName, "UTF-8"));  前台js:decodeURI(response.headers['filename'])
  • 1. 响应编码  * 当使用response.getWriter()来向客户端发送字符数据时,如果在之前没有设置编码,那么默认使用iso,因为iso不支持中文,一定乱码  * 在使用response.getWriter()之前可以使用response....
  • 1 请求编码 1.1 直接在地址栏中给出中文 请求数据是由客户端浏览器发送服务器的,请求数据的编码是由浏览器决定的。例如在浏览器地址栏中给出:http://localhost:8080/hello/AServlet?name=传智,那么其中“传智...
  • JavaWeb——响应编码与请求编码

    千次阅读 2017-03-25 14:26:27
    三、响应编码 一般tomcat服务器默认解码ios-8859-1,从tomcat8以后默认utf-8不用再修改,浏览器默认解码是gbk,这里所以我们一般都自己设置,这样比较好控制。 这里response.setHeader("content-type", ...
  • ssm框架中 后台添加 httpServletResponse.setContentType("text/html;charset=utf-8"); 代码 手动设置响应头格式
  • HttpServletResponse 和 ServletResponse 都是接口 具体的类型对象是由Servlet容器传递过来 ... 设置响应头信息;  发送状态码;  设置响应正文;  重定向; 设置响应头信息 HttpServletR...
  • HTTP 头部的编码方式——ASCII编码

    千次阅读 2019-03-09 19:47:03
    先说结果,http请求行、响应行的编码方式都为ASCII,这也是为什么需要对url进行url编码,将非ASCII字符转为ASCII字符。 我们知道在HTTP头部中传入的信息不会被url encode,那header如果有非ASCII码,如中文字符等,...
  • 响应头 Location (代表重定向地址) //servlet1 package com . itheima . header ; import java . io . IOException ; import javax . servlet . ServletException ; import javax . servlet . http...
  • JavaWeb - 常用的HTTP请求响应头

    千次阅读 2018-06-25 10:32:52
    一、HTTP引入:正确的设置HTTP头部信息有助于搜索引擎判断网页及提升网站访问速度。...服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及...
  • Http请求和响应编码问题

    万次阅读 2018-06-10 01:45:22
    今天来谈谈Tomcat服务器和网页之间编码和解码之间的关系。 关于URL编码的问题可以看 链接:廖雪峰 修正:百度现在编码也是UTF-8 关于编码之间的转换问题可以看 链接:编码转换问题 浏览器端的编码: 影响...
  • 通常,Web服务器一直使用指定...常见的请求 1、 GET或POST:请求类型,后接请求资源、协议和版本 2、 Host:主机和端口 3、 Connection:是否使用持续连接 4、 User-Agent:客户端浏览器的名称 5、 Accept:浏览器
  • 响应头编码问题导致的汉字乱码 Web服务器响应回前端的汉字可能会出现乱码的问题。导致汉字乱码的原因有很多种,归根到底都是出现在编码格式utf-8上面。 本人手写的原生代码服务器项目中出现一个汉字乱码问题。在...
  • HTTP请求响应头详解【转】

    千次阅读 多人点赞 2019-07-09 17:10:14
    当服务器收到这个请求时将返回一个响应,该响应包括与该请求相关的信息以及位于指定URL(如果有的话)的数据。直到浏览器解析该响应并显示出网页(或其他资源)为止。 HTTP请求 HTTP请求的格式如下所示: ...
  • http请求分为三部分:请求行,请求, 请求体 ... Accept-Encoding: 浏览器发给服务器,声明浏览器支持的编码类型,gzip, deflate Accept-Language: 客户端接受的语言格式,比如 zh-CN Connection:.
  • 在发送请求后,服务器会返回一个响应内容,而且requests通常会自动解码响应内容 1.文本响应内容 获取文本类型的响应内容 r = requests.get('https://www.baidu.com') r.text # 通过文本的形式获取响应内容 '<!...
  • HTTP响应头相关漏洞

    千次阅读 2018-11-25 12:49:31
    目录 X-Frame-Options(点击劫持) 会话Cookie中缺少Http Only属性 ... X-XSS-Protection X-Content-Type-Options ...Strict-Transport-Security ...一些大公司使用这些安全响应头示例 X-Frame-Opt...
  • Servlet中请求与响应编码总结

    千次阅读 2017-08-01 15:50:54
    request请求过程 与respone响应过程乱码问题的产生过程 request域默认使用iso8859-1编解码,前台页面传递的参数的编码类型由html编码决定,例如html或者jsp使用utf-8编码,参数传到request域,request使用iso8859-...
  • Web请求响应编码问题详解

    千次阅读 2017-10-23 14:07:59
    乱码问题一直是困扰开发人员的...更复杂的是,不同的浏览器对 URL 和查询参数采用的默认编码可能还不一样,这就更加加深了问题的难度。本文将深入浅出地分析 web 请求响应中乱码产生的原因与解决该问题的关键因素,并
  • http头部字段Content-Type约定请求和响应的HTTP body内容编码类型,客户端和服务端根据http头部字段Content-Type正确解码HTTP body内容。 常见的http头部Content-Type:  application/x-www-form-urlencoded ...
  • HTTP中的请求响应头

    千次阅读 2021-11-18 11:14:30
    一请求 1.Accept 告诉服务器,客户端支持的数据类型 2.Accept-Encoding 告诉服务器,客户机支持的数据压缩格式。 3.Accept-Language 告诉服务器,客户机的语言环境。 4.Connection 客户机通过这个告诉服务器,...
  • Header:请求 Request Body:请求体 HTTP请求报文由3部分组成(请求行+请求+请求体): 下面是一个实际的请求报文: ①是请求方法,HTTP/1.1 定义的请求方法有8种:GET、...
  • Node设置响应头的方式

    千次阅读 2019-06-21 16:23:05
    response.writeHead(statusCode[, statusMessage][, headers]) 版本历史 statusCode <number> statusMessage <string> headers <Object>...向请求发送响应头。... 最后一个参数 headers 是响应头...
  • Content-Encoding是HTTP协议的响应报文,一般形式如: Content-Encoding:gzip,deflate,compress Content-Encoding的说明中指出deflate指的是在RFC1950说明的zlib格式。也就是说当Content-Encoding为deflate时,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 413,275
精华内容 165,310
关键字:

响应头编码