部落客廣告聯播

2008年8月13日 星期三

關於Http Header "Content-Disposition"

2 則留言:

skywalker 提到...

您好. 您的文章筆記好棒, 感謝分享.

不好意思, 要請教您一個小問題.
請問: 如何在WAS6.0 上執行 HTTP Header的設定? 我目前的環境是 WAS6.0.2.9, 沒有安裝IBM HTTP Server. 若是此種情況, 我如何編輯or設定 httpd.conf 檔案? 是不是只有安裝HTTP Server, 才會有此檔案?

因為要配合IE8的相容性檢視, 我需要在WEbServer 中加上一段語句:Header set X-UA-Compatible "IE=EmulateIE7". 不知道該如何加? 在何處加?

若您知道答案, 再麻煩指導. 謝謝!!

Dolph 提到...

Dear Skywalker,
我想最好的解決方法應該是寫個filter,針對所有的response設定你所需的Header。

1.
Filter原始碼如下:
// ---------------------------
package idv.dolph.myjavanote;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;


public class IE8EmuIE7HeaderFilter implements Filter {

@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse hresp = (HttpServletResponse) resp;
hresp.addHeader("X-UA-Compatible", "IE=EmulateIE7");
chain.doFilter(req, resp);
}


@Override
public void init(FilterConfig arg0) throws ServletException {

}

@Override
public void destroy() {

}
}
// ---------------------------

2.
寫好Filter後,WEB-INF下的web.xml多加下列設定:

<!-- ---------------- -->

<filter>
<description>
IE8設定Header模擬IE7
</description>
<filter-name>
IE8EmuIE7
</filter-name>
<filter-class>
idv.dolph.myjavanote.IE8EmuIE7HeaderFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>
IE8EmuIE7
</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- ---------------- -->

OK後重啟你的WebApp應該就可以了。

以上的解決方法使用Filter所以在各家Servlet container都可以使用,不會侷限於Websphere上。

由於我還沒有用過IE8所以也還沒做過相關測試,麻煩你試了後再回覆個結果吧,有任何問題也歡迎提出喔~~