使用代理和不使用代理request获取host、scheme、url、ip区别

测试代码:

		String host = getRequest().getHeader("Host");System.out.println("host:" + host);String scheme = getRequest().getScheme();System.out.println("scheme:" + scheme);String forwardedProto = getRequest().getHeader("X-Forwarded-Proto");System.out.println("forwardedProto:" + forwardedProto);String url = getRequest().getRequestURL().toString();

浏览器输入:http://127.0.0.1:8080/xpl/demo/dynamicCondition

打印结果:

host:127.0.0.1:8080
scheme:http
forwardedProto:null
url:http://127.0.0.1:8080/xpl/demo/dynamicCondition

使用nginx代理,代理主要配置:

    server {
        listen       443 ssl;
        server_name  my.com;

        ssl_certificate      20241028.pem;
        ssl_certificate_key  20241028.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        location /xpl/demo/dynamicCondition {
            proxy_pass   http://192.168.5.55:8080;

            root   html;
            index  index.html index.htm;
        }

浏览器输入:https://my.com/xpl/demo/dynamicCondition 

打印结果:

host:my.com
scheme:http
forwardedProto:https
url:http://my.com/xpl/demo/dynamicCondition

结论:

 1.从浏览器输入请求地址访问时,浏览器会自动在请求头中添加Host属性,属性值对应请求地址主机地址(有端口号的话,包括端口号)。即http(s)://{主机地址}/。

2.getRequest().getHeader("Host")就是从请求头中获取对应的Host属性。

3.nginx代理如果不配置proxy_set_header Host $http_host;,那么后面打印的应该就是:

192.168.5.55:8080

而不是: 

my.com

 4.默认浏览器发送的请求头中X-Forwarded-Proto应该是没有值的。一般都是代理加上的。

5.getRequest().getScheme()如果web服务器如果没有做ssl配置的话,一般都是返回http。

6.getRequest().getRequestURL()方法前面的协议是与getRequest().getScheme()一致的,即可能与浏览器输入的地址不一样。没有深入的分析源码,初步猜测应该是:

{getScheme()}://{Host}/{getRequestURI()}

 以上结论,是通过上面测试得出的。下面还有些结论就没写具体测试过程了。

关于ip地址

1.request.getRemoteAddr()获取客户端ip地址。这个是tcp/ip网络层协议中获取的ip地址,是请求发出终端的ip地址。无法伪造的。如果使用了代理,返回的就是代理的地址。

2.使用代理的情况,要如何获取用户真实的ip地址呢?这个就要代理服务器告诉你了。需要的代理服务器约定好,比如request.getHeader("X-Real-IP")或者request.getHeader("x-forwarded-for")或者request.getHeader("Proxy-Client-IP")等方法了。具体使用哪种方法得看代理服务器了。上面例子用的是请求头中加入X-Real-IP属性。

3.使用代理获取的用户真实ip地址,有可能被伪造的。比如代理可以在请求头的X-Real-IP属性写入任意ip地址,并不一定是用户真实的ip地址。即如果对用户真实ip地址准确的有严格要求的话,要对代理服务器进行验证,避免伪造代理服务器发起请求,获取到错误的用户ip地址。

关于getRequest().getRequestURI()

1.该方法不会返回空字符串,即使浏览器输入地址

http://127.0.0.1:8080

或者

http://127.0.0.1:8080/

返回值都是"/" 

2.返回值截止至“?”,不包含“?”。例如:

http://127.0.0.1:8080/xpl  返回值是  “/xpl”

http://127.0.0.1:8080/xpl?a=3  返回值是  “/xpl”

http://127.0.0.1:8080/xpl/  返回值是  “/xpl/”

http://127.0.0.1:8080/xpl/?a=3  返回值是  “/xpl/”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/459956.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模具生产管理系统软件:提升制造业效率的新利器

引言 我们都知道,企业面临着提高生产效率、降低成本和提升产品质量的压力。模具生产作为制造过程中至关重要的一环,如何有效管理和优化模具生产过程,成为企业关注的重点。模具生产管理系统应运而生,能够为企业提供实时监控、流程…

MySQL中,如何定位慢查询?定位到的慢SQL如何分析?

目录 1. 慢查询发生的场景? 2. MySQL中,如何定位慢查询? 2.1 详细解释 3. 定位到的慢SQL如何分析? 3.1 详细说明 1. 慢查询发生的场景? 2. MySQL中,如何定位慢查询? 介绍一下当时产生问题…

「C/C++」C++ 设计模式 之 单例模式(Singleton)

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

华为云开源项目Sermant正式成为CNCF官方项目

近日,云原生计算基金会(CNCF)正式接纳由华为云发起的云原生无代理服务网格项目Sermant。Sermant的加入,极大地丰富了云原生微服务治理技术的探索、创新和发展,为CNCF社区注入了新的活力。 Sermant是华为云在微服务治理…

用sdcc给51单片机编译C程序

学习单片机大部分人用的是Keil uVision,虽然好用,可大部分人用的是盗版,其实单片机程序小的话,完全可以用文本编辑器(推荐notepad)编写,然后用免费的sdcc来编译,下面介绍一下大致的过程。 sdcc…

Ajax:表单 模板引擎

Ajax&#xff1a;表单 & 模板引擎 form 表单form 属性 Ajax操控表单事件监听阻止默认行为收集表单数据 模板引擎art-template{{}}语法原文输出条件输出循环输出过滤器 原理 form 表单 在HTML中&#xff0c;可以通过<form>创建一个表单&#xff0c;收集用户信息。而采…

【水下生物数据集】 水下生物识别 深度学习 目标检测 机器视觉 yolo(含数据集)

一、背景意义 随着全球海洋生态环境的日益变化&#xff0c;水下生物的监测和保护变得愈发重要。水下生物种类繁多&#xff0c;包括螃蟹、鱼类、水母、虾、小鱼和海星等&#xff0c;它们在海洋生态系统中扮演着关键角色。传统的水下生物监测方法通常依赖于人工观察&#xff0c;效…

[vulnhub]Kioptrix: Level 1.2 (#3)

https://www.vulnhub.com/entry/kioptrix-level-12-3,24/ 主机发现端口扫描 使用nmap扫描网段类存活主机 因为靶机是我最后添加的&#xff0c;所以靶机IP是169 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-29 13:16 CST …

TVM前端研究--Relay

文章目录 深度学习IR梳理1. IR属性2. DL前端发展3. DL编译器4. DL编程语言Relay的主要内容一、Expression in Relay1. Dataflow and Control Fragments2. 变量3. 函数3.1 闭包3.2 多态和类型关系3.3. Call4. 算子5. ADT Constructors6. Moudle和Global Function7. 常量和元组8.…

Ubuntu UFW防火墙规则与命令示例大全

在服务器安全领域&#xff0c;防火墙是守护网络安全的坚实盾牌。UFW&#xff08;Uncomplicated Firewall&#xff09;&#xff0c;即“不复杂的防火墙”&#xff0c;是一个运行在iptables之上的防火墙配置工具&#xff0c;它为Ubuntu系统默认提供了一个简洁的命令行界面&#x…

Linux高阶——1026—验证内存映射mmap函数使用

1、验证共享映射后修改文件内容&#xff0c;是否能够同步 先创建一个映射文件&#xff0c;写入数据 分为四个步骤 1、打开映射文件 设文件描述符&#xff0c;使用open函数 int fd; if((fdopen("mapfile",O_RDWR))-1) { perror("open failed");exit…

从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09; 文章目录 从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09;一、前言二、vue项目部署前配置1、vite.config.js 增加…

快速遍历包含合并单元格的Word表格

Word中的合并表格如下&#xff0c;现在需要根据子类&#xff08;例如&#xff1a;果汁&#xff09;查找对应的品类&#xff0c;如果这是Excel表格&#xff0c;那么即使包含合并单元格&#xff0c;也很容易处理&#xff0c;但是使用Word VBA进行查找&#xff0c;就需要一些技巧。…

智慧园区 | 数智引领,让智慧触手可及

随着科技的飞速发展&#xff0c;智慧园区正成为现代城市发展的重要方向之一。在智慧园区中&#xff0c;各种高科技手段被应用于园区的管理和服务&#xff0c;为园区的运营和居民的生活带来无限可能。 智慧园区管理平台是智慧园区建设的核心。它集聚了大数据、物联网、云计算等技…

基于uniapp微信小程序的旅游系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【分布式知识】分布式对象存储组件-Minio

文章目录 什么是minio核心特点&#xff1a;使用场景&#xff1a;开发者工具&#xff1a;社区和支持&#xff1a; 核心概念什么是对象存储&#xff1f;MinIO 如何确定对对象的访问权限&#xff1f;我可以在存储桶内按文件夹结构组织对象吗&#xff1f;如何备份和恢复 MinIO 上的…

iQOO手机怎样将屏幕投射到MacBook?可以同步音频吗?

众所周知&#xff0c;苹果品牌的设备自己有AirPlay的投屏功能&#xff0c;iPhone要投屏到MacBook只要连接同一网络&#xff0c;然后开启AirPlay就可以投屏。但其他品牌的手机没有AirPlay&#xff0c;怎么将手机屏幕投射到MacBook呢&#xff1f; 安卓系统的手机可以使用无线投屏…

2. 从服务器的主接口入手

Webserver 的主函数 main.cpp&#xff0c;完成了哪些功能&#xff1f; #include "config.h"int main(int argc, char *argv[]) {string user "";string passwd "";string databasename "";Config config;config.parse_arg(argc, a…

四、Prompt工程——简单应用

Prompt工程——简单应用 一、提示工程&#xff08;Prompt Engineering&#xff09;二、Prompt基本法则三、Prompt 调优四、简单的例子文本总结文本判断文本提取文本转化——翻译文本转化——语气 更多结语 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程也…

5G RedCap工业路由器赋能电力物联网应用

随着5G轻量化技术应用的推进&#xff0c;5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗&#xff1a;5G RedCap工业路由器通过节能技术&#…