Java request.getHeader(“主机”)返回什么值

Java request.getHeader(“主机”)返回什么值,java,jsp,Java,Jsp,我的申请链接是 现在,当在浏览器中点击此URL时,如果我给出 String host=request.getHeader("Host"); 从 Host request header字段指定所请求资源的Internet主机和端口号,该端口号是从用户或引用资源提供的原始URI获得的 将返回请求中“主机”(在您的示例中为xxxxx.abcd.com)头的值 您可以使用以下程序获取所有标题信息 import java.io.IOException; import java.io.PrintWr

我的申请链接是

现在,当在浏览器中点击此URL时,如果我给出

   String host=request.getHeader("Host");

Host request header字段指定所请求资源的Internet主机和端口号,该端口号是从用户或引用资源提供的原始URI获得的

将返回请求中“主机”(在您的示例中为xxxxx.abcd.com)头的值

您可以使用以下程序获取所有标题信息

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RequestHeaderServlet
*/
@WebServlet("/RequestHeaderServlet")
public class RequestHeaderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public RequestHeaderServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    Enumeration en = request.getHeaderNames();
    while(en.hasMoreElements()){

        //get header name Accept,Accept-Charset,Authorization,Connection,Host etc.   
        String headerName = (String) en.nextElement(); //nextElement() returns Object need type cast

        //get the value of the headerName 
        String headerValue = request.getHeader(headerName);

        //display on browser
        out.print("Header Name = "+ headerName + " " + " Header Value = "+ headerValue + "<br>");

    }
out.close();
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
 }
}
import java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Enumeration;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
/**
*Servlet实现类RequestHeaderServlet
*/
@WebServlet(“/RequestHeaderServlet”)
公共类RequestHeaderServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#HttpServlet()
*/
公共请求HeaderServlet(){
超级();
//TODO自动生成的构造函数存根
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse响应)
*/
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
枚举en=request.getHeaderNames();
while(en.hasMoreElements()){
//获取头名称Accept、Accept字符集、授权、连接、主机等。
String headerName=(String)en.nextElement();//nextElement()返回对象需要类型转换
//获取headerName的值
字符串headerValue=request.getHeader(headerName);
//在浏览器上显示
打印(“标题名称=“+headerName+”“+”标题值=“+headerValue+”
”); } out.close(); } /** *@请参阅HttpServlet#doPost(HttpServletRequest请求,HttpServletResponse响应) */ 受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{ //TODO自动生成的方法存根 } }
相关链接

它将返回请求中“主机”头的值,该值必须是“从用户或引用资源提供的原始URI中获得的”。请参阅。

System.out.println(主机)//xiao xiao xiao(主机名)我的应用程序托管在web服务器上,我当前无法运行它。我在互联网上搜索过这个问题,但还没有得到答案。@Pavelhour“hosts”文件与这个问题无关。@EJP在我看来,OP不知道如何在他的本地机器上测试这个问题。因此建议使用本地主机模拟真实的主机访问。我也这么想,但他是通过
HTTPS
请求的,我还没有确认这是否会忽略主机名后的端口,因此可能
xxxx.abcd.com:443
不正确,以及您的源代码-1,引用非规范性引用应另加-1。本例中的规范性参考是Servlet规范@radimpe端口号不是主机名的一部分。@EJP根据它是。我猜您没有阅读它,但检查了14.23:没有任何尾随端口信息的“主机”意味着服务的默认端口requested@radimpe哦,没错,但是看看我的答案。这一个是不正确的。先生,我已经编辑了答案,您仍然觉得它不符合要求,请告诉我有什么问题?谢谢你告诉我错了。错的是你的答案和这里引用的RFC 2616中的答案有什么不同,即引用句子的最后三个单词,以及你的答案和你引用的例子之间的明显差异。如果你看不出来,我想我无法进一步帮助你。
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RequestHeaderServlet
*/
@WebServlet("/RequestHeaderServlet")
public class RequestHeaderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public RequestHeaderServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    Enumeration en = request.getHeaderNames();
    while(en.hasMoreElements()){

        //get header name Accept,Accept-Charset,Authorization,Connection,Host etc.   
        String headerName = (String) en.nextElement(); //nextElement() returns Object need type cast

        //get the value of the headerName 
        String headerValue = request.getHeader(headerName);

        //display on browser
        out.print("Header Name = "+ headerName + " " + " Header Value = "+ headerValue + "<br>");

    }
out.close();
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
 }
}