Hướng dẫn http header javascript enabled - tiêu đề http đã bật javascript

Thật không may, không có API để cung cấp cho bạn các tiêu đề phản hồi HTTP cho yêu cầu trang ban đầu của bạn. Đó là câu hỏi ban đầu được đăng ở đây. Nó cũng đã được hỏi nhiều lần, bởi vì một số người muốn nhận được các tiêu đề phản hồi thực tế của yêu cầu trang gốc mà không cần đưa ra một tiêu đề khác.

Đối với các yêu cầu AJAX:

Nếu một yêu cầu HTTP được thực hiện qua AJAX, có thể nhận các tiêu đề phản hồi bằng phương thức getAllResponseHeaders(). Đó là một phần của API XMLHTTPREQUEST. Để xem làm thế nào điều này có thể được áp dụng, hãy xem chức năng fetchSimilarHeaders() bên dưới. Lưu ý rằng đây là công việc xung quanh vấn đề sẽ không đáng tin cậy đối với một số ứng dụng.getAllResponseHeaders() method. It's part of the XMLHttpRequest API. To see how this can be applied, check out the fetchSimilarHeaders() function below. Note that this is a work-around to the problem that won't be reliable for some applications.

myXMLHttpRequest.getAllResponseHeaders();
  • API được chỉ định trong khuyến nghị ứng cử viên sau đây cho XMLHTTPREQUEST: XMLHTTPREQUEST - Khuyến nghị ứng viên W3C 3 tháng 8 năm 2010

  • Cụ thể, phương pháp getAllResponseHeaders() đã được chỉ định trong phần sau: W3.org: XMLHttpRequest: Phương pháp

    function fetchSimilarHeaders (callback) {
        var request = new XMLHttpRequest();
        request.onreadystatechange = function () {
            if (request.readyState === XMLHttpRequest.DONE) {
                //
                // The following headers may often be similar
                // to those of the original page request...
                //
                if (callback && typeof callback === 'function') {
                    callback(request.getAllResponseHeaders());
                }
            }
        };
    
        //
        // Re-request the same page (document.location)
        // We hope to get the same or similar response headers to those which 
        // came with the current page, but we have no guarantee.
        // Since we are only after the headers, a HEAD request may be sufficient.
        //
        request.open('HEAD', document.location, true);
        request.send(null);
    }
    
    0

  • Tài liệu MDN cũng tốt: Nhà phát triển.mozilla.org: XMLHttpRequest.

Điều này sẽ không cung cấp cho bạn thông tin về các tiêu đề phản hồi HTTP yêu cầu của trang ban đầu, nhưng nó có thể được sử dụng để đưa ra những dự đoán có giáo dục về những tiêu đề đó là gì. Thêm về điều đó được mô tả tiếp theo.

Nhận giá trị tiêu đề từ yêu cầu trang ban đầu:

Câu hỏi này lần đầu tiên được hỏi vài năm trước, hỏi cụ thể về cách nhận được các tiêu đề phản hồi HTTP ban đầu cho trang hiện tại (nghĩa là cùng một trang bên trong mà JavaScript đang chạy). Đây là một câu hỏi khá khác với việc chỉ nhận các tiêu đề phản hồi cho bất kỳ yêu cầu HTTP nào. Đối với yêu cầu trang ban đầu, các tiêu đề không có sẵn cho JavaScript. Liệu các giá trị tiêu đề bạn cần sẽ phù hợp một cách đáng tin cậy và đủ nếu bạn yêu cầu cùng một trang thông qua AJAX sẽ phụ thuộc vào ứng dụng cụ thể của bạn.

Sau đây là một vài gợi ý để giải quyết vấn đề đó.

1. Yêu cầu về tài nguyên phần lớn là tĩnh

Nếu phản hồi phần lớn là tĩnh và các tiêu đề dự kiến ​​sẽ không thay đổi nhiều giữa các yêu cầu, bạn có thể thực hiện yêu cầu AJAX cho cùng một trang mà bạn hiện đang sử dụng và cho rằng chúng là các giá trị giống nhau là một phần của trang Phản hồi HTTP. Điều này có thể cho phép bạn truy cập các tiêu đề bạn cần bằng API XMLHTTPrequest NICE được mô tả ở trên.

function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}

Cách tiếp cận này sẽ có vấn đề nếu bạn thực sự phải dựa vào các giá trị phù hợp giữa các yêu cầu, vì bạn không thể đảm bảo hoàn toàn rằng chúng giống nhau. Nó sẽ phụ thuộc vào ứng dụng cụ thể của bạn và liệu bạn có biết rằng giá trị bạn cần là thứ không thay đổi từ yêu cầu này sang yêu cầu tiếp theo.

2. đưa ra suy luận

Có một số thuộc tính BOM (mô hình đối tượng trình duyệt) mà trình duyệt xác định bằng cách nhìn vào các tiêu đề. Một số thuộc tính này phản ánh trực tiếp các tiêu đề HTTP (ví dụ:

function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}
2 được đặt thành giá trị của trường tiêu đề HTTP
function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}
3). Bằng cách đánh hơi xung quanh các thuộc tính có sẵn, bạn có thể tìm thấy những gì bạn cần hoặc một số manh mối để chỉ ra phản hồi HTTP có gì.some BOM properties (Browser Object Model) which the browser determines by looking at the headers. Some of these properties reflect HTTP headers directly (e.g.
function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}
2 is set to the value of the HTTP
function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}
3 header field). By sniffing around the available properties you might be able to find what you need, or some clues to indicate what the HTTP response contained.

3. Đưa chúng

Nếu bạn kiểm soát phía máy chủ, bạn có thể truy cập bất kỳ tiêu đề nào bạn thích khi bạn xây dựng phản hồi đầy đủ. Các giá trị có thể được chuyển cho máy khách với trang, được đặt trong một số đánh dấu hoặc có lẽ trong cấu trúc JSON được in. Nếu bạn muốn có mọi tiêu đề yêu cầu HTTP có sẵn cho JavaScript của mình, bạn có thể lặp lại chúng trên máy chủ và gửi chúng trở lại dưới dạng các giá trị ẩn trong đánh dấu. Có lẽ không lý tưởng để gửi các giá trị tiêu đề theo cách này, nhưng bạn chắc chắn có thể làm điều đó cho giá trị cụ thể bạn cần. Giải pháp này cũng không hiệu quả, nhưng nó sẽ thực hiện công việc nếu bạn cần.

Nội dung bài viết

Video học lập trình mỗi ngày

How to set header and options in axios? Một câu hỏi nhanh và thiết thực, và những hướng dẫn sau đây nhanh gọn nhẹ hướng đến người đọc nắm bắt nhanh nhất có thể khi học Axios. Và bài hướng dẫn này cũng nằm trong Series - Mẹo viết javascript. Và mục đích của bài viết này chính là làm nền tảng cho việc triển khai ví dụ "Login github with nodejs" ở đó, bạn bắt buộc phải xài axios.

Ở bài này nói trước là xin lỗi anh em không giải thích nhiều về Axios nữa, vì có nhiều bài mình đã nói sự lợi hại trong việc sử dụng axios, cũng như giải thích việc ưu nhược giữa tranh cãi đó là việc sử dụng giữa axios và fetch. Nên ở đây chỉ nói thêm phần phụ trợ đó là "làm thế nào để add header to axios" thôi nhé. Mọi thủ thuật mình đều ở link trong bài viết, cứ vào mà đọc, rồi trầm trồ.

Post axios headers

Cú pháp như sau:

axios.post(url, options1, options2)

Như trên thì các bạn thấy đấy có 3 tham số: url: Chính là url bạn cần post dữ liệu đến options1: Những params bạn muốn gửi đến options2: Chính là bạn set header vào như

function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === XMLHttpRequest.DONE) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}
4 Cụ thể như sau:

axios.post(url, {
  name: 'anonystick',
  age: 45
}, {
  headers: {
    accept: 'application/json'
  }
})

Get axios header

Tương tự POST thì GET cũng vậy mà thôi, việc sử dụng header trong GET axios được thực hiện như sau:

const token = '..your token..'
const resp = await axios.get(`https://api.github.com/user`, {
    headers: {
      'Authorization': `token ${token}`
    }
})
console.log('Res::::', resp.data)

Axios header Authorization

Việc sử dụng authorization header, thì bạn có thể sử dụng như sau.

const token = '..your token..'

axios.post(url, {
  //...data
}, {
  headers: {
    'Authorization': `Basic ${token}` 
  }
})

Chỉ vậy thôi, đơn giản nhanh chóng, bài sau sẽ hướng dẫn tiếp cho các bạn nào muốn sủ dụng "async await axios". Xin chào và tiếp tục.