精华内容
下载资源
问答
  • 从REST Controller获取HTTP请求头

    千次阅读 2019-05-19 08:45:00
    点击左上角,关注:“锅外的大佬”专注分享国外最新技术内容,帮助每一个技术人更优秀地成长1. 引言本教程中,将展示如何从REST Controller中获取HTTP 请求头...

    点击左上角,关注:“锅外的大佬”

    专注分享国外最新技术内容,帮助每一个技术人更优秀地成长


    1. 引言

    本教程中,将展示如何从REST Controller中获取HTTP 请求头。 我将使用 @RequestHeader注解分别来获取单个Header和所有Header, 然后将深入了解下 @RequestHeader的属性。

    2. 获取Header

    2.1. 获取单个Header

    如果我们要获取具体的Header,可以在 @RequestHeader指定对应的Header名称。

    @GetMapping("/greeting")	
    public ResponseEntity<String> greeting(@RequestHeader("accept-language") String language) {	
        // code that uses the language variable	
        return new ResponseEntity<String>(greeting, HttpStatus.OK);	
    }

    然后我们可以在方法中使用该变量的名称来获取请求头的值,以上代码中,如果 accept-language无法在请求头中找到,则会返回 400BadRequest错误。 当然,请求头不一定非要是字符串。例如,如果知道请求头的值是数字,可以将变量声明为数字类型。

    @GetMapping("/double")	
    public ResponseEntity<String> doubleNumber(@RequestHeader("my-number") int myNumber) {	
        return new ResponseEntity<String>(String.format("%d * 2 = %d", 	
          myNumber, (myNumber * 2)), HttpStatus.OK);	
    }

    2.2. 一次获取所有Header

    如果不确定哪些Header会被使用,或者想要使用某些未在方法中声明的header, 那么在使用 @RequestHeader注解时,不指定名称即可。 可以使用诸如 Map, MultiValueMap,或者 HttpHeader对象来接收变量,有很多种选择。 先看下使用 Map来接收。

    @GetMapping("/listHeaders")	
    public ResponseEntity<String> listAllHeaders(@RequestHeader Map<String, String> headers) {	
        headers.forEach((key, value) -> {	
            LOG.info(String.format("Header '%s' = %s", key, value));	
        });	
        return new ResponseEntity<String>(String.format("Listed %d headers", headers.size()), HttpStatus.OK);	
    }

    如果使用 Map,则当某个 Header有多个值时,只能拿到第一个值。这等价于我们使用 MultiValueMap时,调用 getFirst方法。 如果 Header中有多个参数,可以使用 MultiValueMap来接收参数值。

    @GetMapping("/multiValue")	
    public ResponseEntity<String> multiValue(@RequestHeader MultiValueMap<String, String> headers) {	
        headers.forEach((key, value) -> {	
            LOG.info(String.format("Header '%s' = %s", key, value.stream().collect(Collectors.joining("|"))));	
        });	
        return new ResponseEntity<String>(String.format("Listed %d headers", headers.size()), HttpStatus.OK);	
    }

    也可以使用 HttpHeader对象:

    @GetMapping("/getBaseUrl")	
    public ResponseEntity<String> getBaseUrl(@RequestHeader HttpHeaders headers) {	
        InetSocketAddress host = headers.getHost();	
        String url = "http://" + host.getHostName() + ":" + host.getPort();	
        return new ResponseEntity<String>(String.format("Base URL = %s", url), HttpStatus.OK);	
    }

    HttpHeader对象中可以访问应用的一些公共请求头。 使用以上三种方式来获取请求头时,如果 Header不存在,将会返回 null值。

    3. @RequestHeader的属性

    我们已经学习了使用 @RequestHeader注解访问请求头的基础知识,现在来进一步了解它的属性。

    当我们指定Header是,实际上已经隐式地使用了 name或 value属性。

    public ResponseEntity<String> greeting(@RequestHeader("accept-language") String language) {	
    }

    当然也可以用 name属性:

    public ResponseEntity<String> greeting(@RequestHeader(name = "accept-language") String language) {	
    }

    同样地可以使用 value属性:

    public ResponseEntity<String> greeting(@RequestHeader(value = "accept-language") String language) {	
    }

    但我们明确地指定某个 Header的名称时,默认这个 Header是必需的,如果请求中不存在,将会发生 400错误。 可以使用 required属性来表明某个 Header不是必需的。

    @GetMapping("/nonRequiredHeader")	
    public ResponseEntity<String> evaluateNonRequiredHeader(	
      @RequestHeader(value = "optional-header", required = false) String optionalHeader) {	
        return new ResponseEntity<String>(	
          String.format("Was the optional header present? %s!", (optionalHeader == null ? "No" : "Yes")), 	
          HttpStatus.OK);	
    }

    当某个 Header不存在时,我们声明的变量可能为 null值,因此,程序中要适当对 null值进行检查。 或者使用 defaultValue提供默认的header值。

    @GetMapping("/default")	
    public ResponseEntity<String> evaluateDefaultHeaderValue(	
      @RequestHeader(value = "optional-header", defaultValue = "3600") int optionalHeader) {	
        return new ResponseEntity<String>(String.format("Optional Header is %d", optionalHeader), 	
        HttpStatus.OK);	
    }

    4. 总结

    在这篇简短教程中,我们学习了如何在Spring REST控制器中获取请求头。首先,我们使用 @RequestHeader注解向Controller方法提供Header的值。 了解基础知识之后,我们详细查看了@RequestHeader注解的一些属性。示例代码可以在GitHub上找到。

    原文链接:https://www.baeldung.com/spring-rest-http-headers

    作者:Amy DeGregorio

    译者:Leesen 


    640?wx_fmt=png


    动手扫一扫关注,帮你不断突破技术壁垒

    展开全文
  • 如题,最近在整免流。求大神解答如何用代码获取http请求头。。。。。。。。。。。。。。
  • ThinkPHP5 获取HTTP请求头的信息

    千次阅读 2020-07-09 14:25:39
    使用Request对象中的header方法进行获取获取请求头中所有的信息:$info = Request::instance()->header(); 获取某个请求头中的信息:$accept ...HTTP请求头信息的名称不区分大小写,并且 _ 会自动转换为 - ...

    使用Request对象中的header方法进行获取。

    获取请求头中所有的信息:$info    =    Request::instance()->header(); 

    获取某个请求头中的信息:$accept   =    Request::instance()->header('accept');

    HTTP请求头信息的名称不区分大小写,并且 _ 会自动转换为 - 
     

    展开全文
  • Django获取http请求头内容详解

    万次阅读 2018-06-21 18:06:10
    如何获取: 通过view函数传递过来的 reuqest,使用request.META.get("header key")来获取注意: header key必须大写,前缀必须是"HTTP",后面如果连接符是横线“-”,要改成...)来获取请求头...

    如何获取:

        通过view函数传递过来的 reuqest,使用request.META.get("header key")来获取

    注意:

        header key必须大写,前缀必须是"HTTP",后面如果连接符是横线“-”,要改成下划线“_”。例如你的header的key为api_auth,那在Django中应该使用request.META.get("HTTP_API_AUTH")来获取请求头的数据。

    展开全文
  • 放到php环境中去,建个index....gt; $value) { echo "$name: $value\n";}//跟具自己的需要来echo getallheaders()['Host'];//方法2#测试网址: http://localhost/blog/testurl.php?id=5//获取域名或主机...
    放到php环境中去,建个index.php
    


    foreach (getallheaders() as $name => $value) {
        echo "$name: $value\n";
    }
    //跟具自己的需要来

    echo getallheaders()['Host'];

    //方法2


    #测试网址:     http://localhost/blog/testurl.php?id=5


    //获取域名或主机地址 
    echo $_SERVER['HTTP_HOST']."
    "; #localhost


    //获取网页地址 
    echo $_SERVER['PHP_SELF']."
    "; #/blog/testurl.php


    //获取网址参数 
    echo $_SERVER["QUERY_STRING"]."
    "; #id=5


    //获取用户代理 
    echo $_SERVER['HTTP_REFERER']."
    "; 


    //获取完整的url
    echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    #http://localhost/blog/testurl.php?id=5


    //包含端口号的完整url
    echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    #http://localhost:80/blog/testurl.php?id=5


    //只取路径
    $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
    echo dirname($url);
    #http://localhost/blog






    if (in_array("Mark", $people))
    {
        echo "匹配已找到";
    }
    else
    {
        echo "匹配未找到";
    }

    展开全文
  • 获取Http请求头中自定义属性值 java

    千次阅读 2018-06-25 17:00:17
    需求:低版本app不可以进行接口访问。低版本安卓端请求接口时在请求头中设置了版本信息相关属性,但是...2、对于请求头中携带版本信息的,直接获取属性值与当前最新版本号作比较。实现: public String login(Useri...
  • 在Controller层获取http请求头信息

    千次阅读 2019-12-19 10:58:00
    @HeaderParam @Context 用法实例: import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core....import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; @Path("/users...
  • Java 获取http请求头内容

    万次阅读 2016-01-28 16:26:32
    String headValue = request.getHeader("user-agent"); Enumeration en = request.getHeaders("Accept-Encoding"); while(en.hasMoreElements()){ headValue
  • Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable转载:https://www.cnblogs.com/sonng/p/6645834.html获取HTTP请求头信息一个HTTP请求除了有参数和实体内容外还有...
  • 1.首先获取https://www.baidu.com/的响应: 用get_headers()方法就可以,通过查看php手册, array get_headers ( string $url [, int $format = 0 ] ) get_headers() 返回一个数组,包含有服务器响应一个 HTTP ...
  • 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4005034.html 联系方式:smyhvae@163.com    【系列】Android系列之网络:(持续更新) Android系列之网络(一)--
  • http请求头header、请求体body、请求行介绍

    万次阅读 多人点赞 2019-06-09 09:47:54
    服务器的时候,http请求头的所有信息都封装在这个对象中,通过这个对象,可以获取客户端请求的所有信息。http请求包含请求行/状态行、请求头、请求体。 request如果是post才有请求体,get则没有请求体,直接跟在?...
  • getMethod();... getRequestURI();获取URI getRequestURL();...获取http请求URL后面的查询字符串 getProtocol();获取http后面的协议号版本号 getContextPath();获取URI上下文的路径 getServletPath();获取ser
  • HttpServletRequest对象概述 ...由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求消息体的相关方法。 我们在创建Servlet时会覆盖serv...
  • 获取Http协议的请求行,请求头

    千次阅读 2016-07-20 00:20:32
    获取Http协议的请求行,请求头
  • @RequestHeader只能获取一个...httpEntity可以获取在springmvc中获取全部请求头 后台 前台 结果 responseentity发送请求头,请求体,状态码 需要在响应方法中创建responseentity类型的方法 在这里插入图片描述 ...
  • 获取请求头和请求数据

    千次阅读 2016-09-08 21:40:31
    获取请求头和请求数据
  • 客户端给服务器发送请求头服务器给客户端发送响应package com.example.httpdemo;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader;...
  • Servlet--获取Http协议请求头信息

    千次阅读 2017-07-18 18:51:57
    Servlet--获取Http协议请求头信息 一、创建一个webproject项目实现获取请求头信息 1、创建一个GetServlet类,继承HttpServlet通过doGet请求来获取协议请求头信息。 package tests06_2; import java.io....
  • 如何通过http请求头获取域名,IP地址及flag,详细方法?
  • openresty获取nginx请求头信息

    千次阅读 2020-02-07 15:05:16
    获取请求头信息可以帮助我们做什么呢? ①比如对同一请求url,实际上也可以认定为是同一请求用户,可以限定其单位时间内的请求次数,防止过高频率访问,阻断恶意攻击。 ②也可以在请求头信息中加上token信息,对...
  • js获取HTTP请求头信息

    千次阅读 2016-11-30 14:54:00
    以下为js获取HTTP的全部请求头信息: var req = new XMLHttpRequest(); req.open('GET', document.location, false); req.send(null); var headers = req.getAllResponseHeaders().toLowerCase(); console.log...
  • 获取请求头信息

    千次阅读 2018-06-25 00:11:43
    1.获取所有的请求头信息使用的方法: 1.getHeaderNames(),获取所有请求头的key,返回的是一个迭代器(老款)。 2.getHeader(key),根据可以取出相应请求头的值。 3.代码 public class RequestHeaderServlet ...
  • js获取http请求响应信息

    千次阅读 2019-03-29 11:11:00
    var req = new XMLHttpRequest(); req.open('GET', document.location, false); req.send(null); var headers = req.getAllResponseHeaders().toLowerCase(); alert(headers); 转载于:https://www...
  • javaweb 获取客户端请求头信息

    千次阅读 2019-10-14 15:43:22
    //根据请求头的没给他脑子获取对应的请求头的 out.write(headName+":"+headValue); out.write(" "); } out.write(" "); out.write("获取到客户端Accept-Encoding请求头的值"); out.write(...
  • 通过java后台设置请求头部 可以根据需求修改或者添加请求头信息。 修改请求头代码 根据不同的请求方式,在main方法中选择调用不同的方法(get/post ) package com.iao.controller.feedback; import java.io....
  • Go 获取请求头和请求参数

    千次阅读 2019-09-28 08:13:04
    获取请求头 在浏览器地址栏中输入下面信息,这属于http请求的get方式,请求携带两个参数 http://localhost:8090/param?name=zhang&age=18 下面是谷歌浏览器开发者工具(F12)观察到的信息 [外链图片转存失败,源...
  • HTTP请求行、请求头、请求体详解

    万次阅读 多人点赞 2017-03-30 19:08:55
    HTTP请求
  • java获取和设置请求头

    千次阅读 2019-09-04 11:49:23
    获取请求头内容: 获取请求头数据:request方法 String getHeader(String name):通过请求头的名称获取请求头的值 Enumeration getHeaderNames():获取所有的请求头名称 protected void doGet(HttpServletRequest ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 351,390
精华内容 140,556
关键字:

怎么获取http请求头