gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:59:01 30 4
gpt4 key购买 nike

我有一些代码,如下所示:

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");
}

标题有时会被添加,有时却不会。我可以单步执行代码,它确实会执行。就像它应该的那样,因为它位于代码的最后而不是 if 那里。并且没有触发任何异常。我什至检查了对 response.containsHeader 的调用。

如果我将其更改为:

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
}

它有效。显然,大案件陈述中发生了一些事情。但据我所知,代码是相同的。只有少数对 response.getWriter().println 的调用有所不同。

还能是什么?

最佳答案

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

更多详情参见HttpServletResponse lose header if write body before addHeader?的回答

关于java - 为什么在 HttpServlet 中放置 response.addHeader 会导致失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832480/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com