1. 程式人生 > >406(瀏覽器接收的響應類型和服務器返回的響應類型不匹配)

406(瀏覽器接收的響應類型和服務器返回的響應類型不匹配)

請求 iat text gmv vertica 我們 ant cal 路徑

技術分享圖片

也就是說,瀏覽器所接收的數據格式與服務器響應的數據格式是不匹配的。

瀏覽器接收的數據格式一般可以是任意格式,但是我們在發起Ajax請求時就已經確定了要接收的是Jsonp格式

技術分享圖片

響應的數據類型定義在的content-type中:

技術分享圖片

這就很奇怪了,我們明明使用的返回類型是ResponseEntity,而ResponseEntity@ResponseBody註解類似,都會嘗試將數據解析為json格式,為什麽這裏的MediaType會變成:text/html呢?


原因找到了:

默認情況下,SpringMVC會註冊一個ContentNegotiationStrategy,是根據路徑進行MediaType的判斷,如果路徑是

.html,那麽響應類型就一定是html

此時我們的返回值即便使用了ResponseBody或者ResponseEntity也沒有用,自然後續會出現數據類型的不匹配,報406錯誤就可以理解了


解決方法:

1.修改SpringMvc的攔截方式不再攔截.html;

2.修改SpringMvc的攔截方式,除了攔截.html外再添加新的路徑匹配

如:

技術分享圖片





來自為知筆記(Wiz)

406(瀏覽器接收的響應類型和服務器返回的響應類型不匹配)