首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在HttpServlet中放置response.addHeader会导致失败

为什么在HttpServlet中放置response.addHeader会导致失败
EN

Stack Overflow用户
提问于 2017-01-24 23:50:53
回答 1查看 73关注 0票数 0

我有一些代码,看起来像这样:

代码语言:javascript
复制
public class EGOChervonAPIMethods extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        initalization code

        big case statement

        response.addHeader("Access-Control-Allow-Origin", originHeader);
        response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
    }

标头有时会被添加,但有时它们不会。我可以单步执行代码,它确实会执行。它应该是这样的,因为它在代码的末尾,而不是在那里。并且没有触发任何异常。我甚至给response.containsHeader打了个电话。

如果我将其更改为:

代码语言:javascript
复制
public class EGOChervonAPIMethods extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        initalization code

        response.addHeader("Access-Control-Allow-Origin", originHeader);
        response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");

        big case statement
    }

它起作用了。显然,在大型case语句中发生了一些事情。但据我所知,代码是相同的。只有少数对response.getWriter().println的调用是不同的。

还能是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 00:40:11

我不鼓励在正文之后写标题。当您在主体中写入某些内容(通过写入器)时,headers通常已经发送,因此您不能设置其他headers。

HttpServletResponse lose header if write body before addHeader?的回答中有更多细节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41832480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档