2010-01-29 47 views
0

Restlet's(Google App Engine上的2.0M6)註釋實際上對於資源方法的順序來說是明智的。 發佈html表單數據時,請確保@Post(「html」)方法位於接收資源中的@Post(「xml」)方法之上。 至少Firefox會將兩種內容類型放入請求的Accept頭,因此將處理第一個匹配的方法。爲什麼HTML表單發佈到restlet資源不起作用?

問題是,如果有其他方法可以實現對方法優先級的控制嗎?

例如,我希望客戶端只接受text/html。

+0

「html」是「application/x-www-form-urlencoded」的正確表示嗎? – 2010-01-29 15:27:42

+0

@PartlyCloudy:這是關於在應用程序收到「application/x-www-form-urlencoded」發佈數據後,什麼樣的表示形式被髮送回客戶端。 由於表單通常在html中,所以應該如此(例如,與通常導致xml的ajax post請求相反)。 – Jasper 2010-01-30 18:06:41

+0

不知道我明白「我希望客戶只接受text/html。」如果你正在實現一個服務器,而不是一個客戶端,那麼你無法控制客戶端在「Accept」頭中發送的內容。您只能控制您的服務器如何解釋請求,以及它如何響應。 你能澄清一下你的問題嗎?你是否問過一個情況:客戶端在Accept頭中指定了多種類型,並且你希望一種類型優先於另一種類型,而不管它們在'Accept'頭中是如何指定的? – 2010-02-07 16:47:29

回答

1

根據你的意見,你問是否有某種客戶端的HTML表單屬性或JavaScript來修改接受頭,答案是,AFAIK:不。不適用於用戶提交的點擊鏈接或表單。正如你在你的評論中提到的,你可能能夠使用JS來攔截鏈接點擊和表單帖子,並使用XHR,但如果可能的話,那可能會很棘手。

順便說一句,XmlHttpRequest實際上與XML沒有任何關係。它可以處理任何請求和響應的內容。將HTML片段返回給XHR請求並使用DOM注入來動態更新頁面是非常常見的。