2013-03-20 37 views
7

Tôi muốn xóa một số trường tiêu đề yêu cầu $http từ một yêu cầu cụ thể (có nghĩa là không ở cấp $httpProvider). Những trường này là:

  • Cache-Control
  • If-Modified-Since
  • Referer
  • X-yêu cầu-Với

Làm thế nào để làm điều này trong một yêu cầu duy nhất? Tôi đã cố sử dụng thông số transformRequest nhưng không tìm thấy đủ thông tin để làm cho nó hoạt động. Như một [CoffeeScript] code:

$scope.logout = -> 
    $http({ 
    method: 'GET' 
    url: '/api/logout' 
    headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' } 
    transformRequest: (data, headersGetter) -> 
     console.log data 
     console.log headersGetter 
     data 
    }).success -> 
    $location.path('editor') 

cho thấy dataundefined, headersGetter là function (c){a||(a=Nb(b));return c?a[y(c)]||null:a} (mà nói với tôi hoàn toàn không có gì), và tôi không hiểu những gì để trở về từ chức năng transformRequest.

Trả lời

7
  1. Nếu bạn sử dụng phiên bản chưa được chỉnh sửa của Góc, bạn sẽ nhận được backtraces đẹp hơn khi ngoại lệ xảy ra và bạn sẽ có thời gian dễ dàng hơn để xem mã góc. Cá nhân tôi giới thiệu nó trong khi phát triển. Đây là những gì headersGetter thực sự trông như:

    function (name) { 
        if (!headersObj) headersObj = parseHeaders(headers); 
    
        if (name) { 
         return headersObj[lowercase(name)] || null; 
        } 
    
        return headersObj; 
        } 
    

    Các data lập luận để biến bạn sẽ được undefined trừ khi bạn đang đăng một số dữ liệu.

  2. Chức năng headersGetter có một đối số tùy chọn name, nếu bạn muốn có được một tiêu đề duy nhất, nhưng bạn bỏ qua đối số để thiết lập một tiêu đề:

    headersGetter()['Cache-Control'] = 'no-cache'; 
    headersGetter()['X-Requested-With'] = ''; 
    

    Giá trị trả về từ biến áp của bạn nên được giá trị trong số data bạn muốn sử dụng.

  3. Bạn can’t change the Referer header từ XHR.

Các vấn đề liên quan