prosource

Laravel angularjs 요청::ajax()는 항상 false입니다.

probook 2023. 2. 8. 18:06
반응형

Laravel angularjs 요청::ajax()는 항상 false입니다.

angularjs와 larabel 4로 어플리케이션을 만들고 있습니다.모든 것은 괜찮지만 지금은 XHR 요청만 허용하면 됩니다.

이것은 컨트롤러의 선두에 있는 것입니다.하지만 이 진술은 항상 거짓이다.

    if (!\Request::ajax())
    {
        return Response::json(array('halt'=>Request::ajax()));
    };

각도에서 나는 표준 $http 서비스를 이용하고 있다.

angular.module('APP')
.factory("API", ($http,$q,appClient,apiURL) ->
 class FB
  constructor:->
    this.deferredData = $q.defer();
  info: (reload)->
    $http(
      method: "get"
      url: apiURL+'game/'+appClient+"/info"
    ).success((res)->
      dostuff()
    )

AJAX 콜을 실행할 때X-Requested-Withheader는 보통 으로 설정됩니다.XMLHttpRequest라라벨의Request::ajax()메서드는 단순히 이 헤더의 존재를 확인하는 Symfony2 메서드 위에 구축됩니다.

2012년 10월 Angular.js는 이 헤더를 거의 사용하지 않는다고 판단하여 삭제했습니다.

@Thrustmaster와 자신의 코멘트에 기재되어 있듯이, 다음과 같이 설정할 필요가 있습니다.

$httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"

프런트 엔드 각도 어플리케이션을 수정하지 않고(또는 변경할 수 없음), Rarabel 코드를 수정하여 Angular JS AJAX 요청과 다른 요청을 구별하는 경우에도 다음을 사용할 수 있습니다.

if(Request::wantsJson()) {
    // Client wants JSON returned 
} else {
    // Client does not want JSON returned
}

wantsJson방법은 표준에 의존합니다.AcceptsHTTP 헤더(비표준이 아닌)X-Requested-Withheader)가 있는 경우application/jsonAngular JS가 디폴트인 채로, 일부러 삭제하지 않는 한, 이 방법은 신뢰할 수 있습니다.

추가할 위치를 찾고 있는 AngularJs 신입사원용$httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"

다음은 예를 제시하겠습니다.

var angularApp = angular
  .module('angularApp', [
    'ngResource',
  ])
  .config(['$httpProvider', function($httpProvider) {
      $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
  }]);

언급URL : https://stackoverflow.com/questions/20475460/laravel-angularjs-requestajax-always-false

반응형