HTTP的哪个请求头可以在改?可以任意加请求头吗?

flairy 2006-02-20 07:42:42
比如jsp,

response.addHeader("testheader","1");
response.setHeader("content","test");

...
是不是header的name必须是协议定义好的?

可不可以把一些信息通过HTTP请求头来传递? 像POST or GET的parameter那样
...全文
416 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shine333 2006-02-21
利用HttpRequestWrapper包,你可以改所有东西

比如

public class MyRequest extends HttpServletRequestWrapper {

public MyRequest(HttpServletRequest request) {
super(request);
}

public String getHeader(String name) {
if ("name".equals(name)) {
return "xxxxxxxx";
}
return super.getHeader(arg0);
}
}
回复
myy 2006-02-21
test2.jsp是从另一个jsp里redirect过来的, getHeader("referer") 却得到null
----------
一般的,在页面上点链接、通过js跳转、表单提交等,浏览器都会自动发送referer头(值为当前页面url),但redirect的时候,浏览器的处理方式可能不一样,并没有发送referer头,因此通过head无法获取。
回复
flairy 2006-02-21
多谢指教。
我现在要做的事情, 是如何在head里得到前一个page的URL, 首先想到referer。
比如test2.jsp是从另一个jsp里redirect过来的, getHeader("referer") 却得到null, 这种情况下怎样在head里得到前一个page的URL呢?
回复
kingofhawks 2006-02-21
myy() ( )所言正确,看看HTTP协议吧呵呵
回复
myy 2006-02-20
是不是header的name必须是协议定义好的?
--------------------
不一定,但是,浏览器只能识别rfc文档规定的一些通用的head,相应的,浏览器
也只会发送一些rfc文档规定的一些通用的head到服务器。如果是你自己写的程序
做客户端,不是浏览器,那你可以随便写了----只要规定好含义就行了。


可不可以把一些信息通过HTTP请求头来传递? 像POST or GET的parameter那样
--------------------
可以,同上。

纠正一点,浏览器POST时,parameter一般不是在HTTP请求头中,而是在实体数据中。
回复
qinxiaolin 2006-02-20
HTTP请求应该是跟你的服务器配置有关的!
服务器根据 发送请求头 来确定该请求是否合法!合法,则执行请求动作!
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-20 07:42
社区公告
暂无公告