今天發現 AngularJS 框架的$http服務提供的$http.get() /$http.post()的ajax請求中沒有帶 x-requested-with字段。
這樣的話,后端的php 就無法判斷 接受的http請求是否是 ajax請求了。
怎么辦呢,顯然就是給http 請求頭中 加上這個字段就可以了。
1、AngularJS 中可以這樣子:
I don't know well MVC3 but you can set a custom header for all request from AngularJS.
Then on server side you just have to get this header and do what you want with request from angular.
To have custom header in AngularJS just do this :
angular.module('myModule', []) .config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true"; }])
For use the X-Requested-With you have to do this too :
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
It's not set by default anymore because a lot part of the community have to delete this header to enable CORS request
2、JQuery 的 ajax方法同樣提供了設置 http請求頭的方法;
<html> <head> <script src="./js/libs/jquery/jquery-1.11.2.min.js"></script> </head> <body> <script> window.onload= function(){ alert('123 '); $.ajax({ beforeSend : function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("aadfasdfsdfasdsasasdcccc","ajax"); }, url: "test.html", context: document.body }) } </script> </body> </html>