发送请求时,在请求头的 Host 字段设置其它域名后,用 Request.Url 获取到的链接中的域名变成了 Host 字段设置的域名,而且在本地开发时没有这个问题,发布到服务器上才会这样,这是怎么回事,应该怎么解决?

解决方案 »

  1.   

    我记得Host 字段,是由浏览器自动加的 你不能改的
      

  2.   


    Request对象是用户请求的集合,你告诉我你要怎么修改用户请求?那是用户请求抵达你服务器端后服务器端总结出来的请求对象。
      

  3.   


    Request对象是用户请求的集合,你告诉我你要怎么修改用户请求?那是用户请求抵达你服务器端后服务器端总结出来的请求对象。不是我要修改用户请求啊,我的意思是,假设有人恶意发送请求,他修改了 Host 字段,我在服务器想用 Request.Url 获取当前域名时,就会获取到他设置的 Host,而不是请求本身的域名,我想知道为什么会这样,要怎样获取正确的域名比如说,请求这个地址 www.xxx.com/a,然后请求头的 Host 改为 www.yyy.com;
    然后在服务器调用 Request.Url,得到的是 www.yyy.com/a
      

  4.   


    请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊
      

  5.   


    请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
      

  6.   


    请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
    试过啦,不然我为什么会有这个问题
      

  7.   


    请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
    试过啦,不然我为什么会有这个问题
    那是针对浏览器端的请求,你用httpwebrequest 想发什么都可以,头部只是一个集合,发什么随意,只是浏览器端 对你限制了某个字段,不然怎么会出现请求可以伪造呢,所以 你不要太依赖这些东西
      

  8.   


    请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
    试过啦,不然我为什么会有这个问题
    那是针对浏览器端的请求,你用httpwebrequest 想发什么都可以,头部只是一个集合,发什么随意,只是浏览器端 对你限制了某个字段,不然怎么会出现请求可以伪造呢,所以 你不要太依赖这些东西
    我没有依赖 Host 字段啊,相反我想无视它,我想从 Request.Url 里获取当前请求的域名,可是得到的总是Host字段的域名,我想知道有什么办法可以准确无误地得到当前请求的域名
      

  9.   

    HttpWebRequest 有 Host 属性的。 
      

  10.   

    https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest.host?view=netframework-4.7.2#System_Net_HttpWebRequest_Host
      

  11.   


    Request对象是用户请求的集合,你告诉我你要怎么修改用户请求?那是用户请求抵达你服务器端后服务器端总结出来的请求对象。不是我要修改用户请求啊,我的意思是,假设有人恶意发送请求,他修改了 Host 字段,我在服务器想用 Request.Url 获取当前域名时,就会获取到他设置的 Host,而不是请求本身的域名,我想知道为什么会这样,要怎样获取正确的域名比如说,请求这个地址 www.xxx.com/a,然后请求头的 Host 改为 www.yyy.com;
    然后在服务器调用 Request.Url,得到的是 www.yyy.com/a请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
    试过啦,不然我为什么会有这个问题
    那是针对浏览器端的请求,你用httpwebrequest 想发什么都可以,头部只是一个集合,发什么随意,只是浏览器端 对你限制了某个字段,不然怎么会出现请求可以伪造呢,所以 你不要太依赖这些东西
    我没有依赖 Host 字段啊,相反我想无视它,我想从 Request.Url 里获取当前请求的域名,可是得到的总是Host字段的域名,我想知道有什么办法可以准确无误地得到当前请求的域名Request 里面的属性 就是靠头部带过去的,服务器本来就不知道谁是谁  都是靠头部带过去才分清楚的,这样说还不明白吗
      

  12.   


    Request对象是用户请求的集合,你告诉我你要怎么修改用户请求?那是用户请求抵达你服务器端后服务器端总结出来的请求对象。不是我要修改用户请求啊,我的意思是,假设有人恶意发送请求,他修改了 Host 字段,我在服务器想用 Request.Url 获取当前域名时,就会获取到他设置的 Host,而不是请求本身的域名,我想知道为什么会这样,要怎样获取正确的域名比如说,请求这个地址 www.xxx.com/a,然后请求头的 Host 改为 www.yyy.com;
    然后在服务器调用 Request.Url,得到的是 www.yyy.com/a请求不一定是浏览器发的啊,用 postman,或者写个程序来发,想怎么改都行啊你试试改了你还能收到请求吗?
    试过啦,不然我为什么会有这个问题
    那是针对浏览器端的请求,你用httpwebrequest 想发什么都可以,头部只是一个集合,发什么随意,只是浏览器端 对你限制了某个字段,不然怎么会出现请求可以伪造呢,所以 你不要太依赖这些东西
    我没有依赖 Host 字段啊,相反我想无视它,我想从 Request.Url 里获取当前请求的域名,可是得到的总是Host字段的域名,我想知道有什么办法可以准确无误地得到当前请求的域名Request 里面的属性 就是靠头部带过去的,服务器本来就不知道谁是谁  都是靠头部带过去才分清楚的,这样说还不明白吗
    可是我在开发环境调试是可以得到正确的域名的,发布服务器后就不行了,不知道为什么