2014-03-27 53 views
3

我正在寫一個MVC應用程序,我驚呆了,知道我可以在我的控制器中執行Request.isAJAXRequest()並返回JSONResult(如果它是AJAX),或者返回常規HTML Razor視圖(如果不是)。ASP.NET如何知道請求是否是AJAX?

這是非常有用的,但我想知道這實際上是如何工作的。標題中是否有指定它爲AJAX的內容?

這是我從IE開發人員工具中獲取的AJAX POST的請求標頭。 enter image description here

+1

它就在那裏:'X-Requested-With:XMLHttpRequest' – pawel

+0

「X-Requested-With」請求還有哪些「種類」? – matrixugly

+1

X-'前綴已經被保留用於非標準的頭文件(例如:你可以自己編寫),但是其中一些已經成爲標準,現在不再是這種情況了。 http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Common_non-standard_request_headers – pawel

回答

6

是的,稱爲X-Requested-With頭告訴XMLHttpRequest是用來製造該請求(即阿賈克斯)服務器。

2

這是X-Requested-With標頭請求標頭。

,並因爲頭可以去除改變它不是一個完整的,保證的解決方案來檢測AJAX電話。

更新:

在您的情況(回到正確的格式客戶端),另一種可能是檢查接受頭。它可能是json,xml,html或other things。基於此你可以決定返回什麼。

+0

「完整的,防錯的」解決方案是什麼? – matrixugly

+0

我認爲我應該使用保證而不是防錯。無論如何,我不能說有任何。我說的是一個普遍的問題。請求標頭可以很容易地被操縱,所以不能保證你的方法收到的是一個ajax調用。 –

相關問題