简体   繁体   English

如何从用户请求中获取用户代理?

[英]How can I get a User-agent from user request?

I have to get User-agent from a user request and add custom info to that User-agent and send it back.我必须从用户请求中获取User-agent并将自定义信息添加到该User-agent并将其发回。 I have the following controller:我有以下 controller:

@RequestMapping("/orders")
@Controller
public class MyController {
    @GetMapping("/new_order")
    public String newOrder(RedirectAttributes redirectAttributes, Model model) {
        if (isUserNotAuthorized()) {
            return getLoginRedirectPage(redirectAttributes, "/login");
        }
        model.addAttribute("order", new Order());
        // How to retrieve User-agent and add some custom info and return it back to the user?
        return "new_order";
    }
}

Thanks for your help!谢谢你的帮助!

You can get the header from the request in the following way您可以通过以下方式从请求中获取 header

    @GetMapping("/new_order")
    public String newOrder(@RequestHeader(value = "User-Agent") String userAgent, RedirectAttributes redirectAttributes, Model model) {
           //...
    }

To send the headers back to the client, you can use ResponseEntity要将标头发送回客户端,您可以使用 ResponseEntity

public ResponseEntity<String> newOrder() {
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.set("User-Agent", "updated-Value");

    return ResponseEntity.ok()
      .headers(responseHeaders)
      .body("New order created.");
}

Inject HttpServletRequest in your controller method.在您的 controller 方法中注入HttpServletRequest From there use HttpServletRequest#getHeader(...) to get the header you need.从那里使用HttpServletRequest#getHeader(...)获取您需要的 header。

    @GetMapping("/new_order")
    public String newOrder(RedirectAttributes redirectAttributes, HttpServletRequest request, Model model) {
        String userAgent = request.getHeader("User-Agent");
        if (isUserNotAuthorized()) {
            return getLoginRedirectPage(redirectAttributes, "/login");
        }
        model.addAttribute("order", new Order());
        // How to retrieve User-agent and add some custom info and return it back to the user?
        return "new_order";
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从 Webview 的页面内部获取 json 响应(我收到用户代理的响应)? - How to get json response from inside the page from Webview(I get a response with user-agent)? 即使在包含 User-Agent 属性后,从 java 对网站的 GET 请求也会返回 403 - GET request to website from java returns 403 even after including User-Agent property RestAssured:如何避免在请求中发送 User-Agent header - RestAssured: How to avoid sending the User-Agent header in a request 无法从标题正确获取“ User-Agent” - Unable to get `User-Agent` properly from header 如何防止用户更改用户代理 - How to prevent user-agent to be changed by user 为什么我不能设置Java http User-Agent? - Why can't I set Java http User-Agent? 如何在Vaadin中设置用户代理标头? - How to set user-agent header in Vaadin? 向服务器发送请求时伪造User-Agent? - Faking User-Agent when sending request to server? 将HTTP标头“ User-Agent”添加到HTTP CONNECT请求 - Add http header “User-Agent” to HTTP CONNECT request 谁能帮助您以编程方式使用Selenium Webdriver将修改标头用户代理添加到Chrome浏览器 - Can anyone help to how to add modify header user-agent to chrome browser using selenium webdriver programmatically
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM