有沒有辦法判斷請求是否是Angular(1.1.5)$資源請求。我非常想爲這種類型的請求尋找一個「Request.IsAjaxRequest()」方法。
我期待本作中的被覆蓋的AuthorizeAttribute的HandleUnauthorizedRequest我需要上下文結果集的一些JSON如果一個Ajax或角度的請求或別的東西,如果沒有。
有沒有辦法判斷請求是否是Angular(1.1.5)$資源請求。我非常想爲這種類型的請求尋找一個「Request.IsAjaxRequest()」方法。
我期待本作中的被覆蓋的AuthorizeAttribute的HandleUnauthorizedRequest我需要上下文結果集的一些JSON如果一個Ajax或角度的請求或別的東西,如果沒有。
我不太瞭解MVC3,但您可以爲來自AngularJS的所有請求設置自定義標頭。
然後在服務器端,您只需要得到這個頭,做你想從角度要求什麼。
要在AngularJS自定義標題只是這樣做:
angular.module('myModule', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true";
}])
對於使用X-要求,有了你必須這樣做太:
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
這不是默認設置了,因爲社會的很多部分需要刪除這個頭,使CORS請求
乾杯,這很好,儘管我最初希望有一個頭部已經在那裏我可以檢查。你知道爲什麼它不會與X-Requested-With一起發送嗎? –
默認情況下現在沒有yes。 https://github.com/angular/angular.js/commit/3a75b1124d062f64093a90b26630938558909e8d –
我編輯了答案 –
@Thomas龐斯答案是善,盡AngularJS
要求標準與Web默認秒。但對於具有多個角度模塊的大型應用程序,我覺得爲每個模塊設置起來很麻煩。
不僅如此,但可能你需要檢查,如果你要使用角度的要求之外的JSON響應回覆。在這種情況下,我更願意檢查Accept
請求標頭:
var accepted = HttpContext.Request.Headers["Accept"].Split(',');
if (accepted .Any(x => x == "application/json"))
{
// Send your JsonResult here
}
else
{
// Send your Html/Content result here
}
爲什麼不使用簡單的系統令牌?或者你只是想在ajax請求和經典的mvc請求之間做出區別? –
只是想知道區別,以便我可以發回json或重定向到另一個mvc視圖。 –
MVC方法Request.IsAjaxRequest沒有幫助嗎? – Chandermani