إضافة رؤوس HTTP في طريقة الربيع المعترض postHandle

StackOverflow https://stackoverflow.com/questions/246762

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي المعترض الربيع الذي يسعى لإضافة رأس HTTP في طريقة postHandle ().

public void postHandle(HttpServletRequest req, HttpServletResponse resp, 
             Object obj1, ModelAndView mv)
        throws Exception {
        response.setHeader("SomeHeaderSet", "set");
        response.addHeader("SomeHeaderAdd", "added");
    }
}

ولكن، يتم إضافة لا رأس مع أي setHeader () أو addHeader ().

هل هذا صحيح حتى يجب القيام به في اعتراضية؟ وأنا أحسب أنه سيكون، لكنها ليست ركين.

والتحيات، داستن

هل كانت مفيدة؟

المحلول 2

حسنا، وأنا أحسب بها ... كندة ...

وتبين، نفس القضية مع جيتي والقط (أحسب ربما كان قضية حاوية). لذلك ...

وتصحيحه لضمان أن الكائن استجابة يحتوي على قيمة رأس الصحيحة حتى عاد الربيع إلى الحاوية. النتيجة: مثيل HttpServletResponse لا تزال لديها قيمة رأس الصحيحة

ولقد وجدت في قانون بلدي كنت استدعاء response.setContentLength() قبل كنت أفعل أي شيء مع رؤوس. إذا أعلق بها، كل شيء يعمل بشكل جيد.

وهكذا، فإن الغموض المتبقي هو، لماذا لا تدعو response.setContentLength() قفل الأمور وعدم السماح لأي رؤوس إلى تعديل؟ لم أكن أعتقد ان الجثة محتوى أي علاقة مع رؤوس أخرى.

نصائح أخرى

هل حاولت وضع الرؤوس في طريقة preHandle؟ إذا لم يفلح ذلك في محاولة كتابة تصفية الحاوية وتعيين الرؤوس في هناك بدلا من ذلك.

وكان لي مشكلة مماثلة، وأنها تعمل عندما يكون لدي ما يلي في web.xml (لم ترد على لماذا)

<filter>
  <filter-name>etagFilter</filter-name>
    <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>etagFilter</filter-name>
  <servlet-name>myServlet</servlet-name>
</filter-mapping>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top