詳解axios設置header

一、axios設置header跨域

在跨域請求中,前端需要設置{‘ ‘}Access-Control-Allow-Headers{‘ ‘}來允許header中的自定義欄位。同時後端也需要設置{‘ ‘}Access-Control-Expose-Headers{‘ ‘}來暴露header中的自定義欄位。

在axios中,可以通過設置{‘ ‘}withCredentials: true{‘ ‘}來攜帶跨域請求的cookie信息。然後在請求頭中中設置{‘ ‘}Access-Control-Allow-Credentials{‘ ‘}為{‘ ‘}true{‘ ‘}即可。

axios.get(url, {
  withCredentials: true,
  headers: {
    'Access-Control-Allow-Credentials': true,
    'Access-Control-Allow-Origin': 'http://example.com'
  }
})

二、axios設置headers

在axios中設置header,可以通過{‘ ‘}headers{‘ ‘}進行設置。我們可以在創建axios實例的時候設置公共的headers,也可以在每個請求中單獨配置headers。

如果需要在每個請求中攜帶固定的headers,可以通過{‘ ‘}axios.defaults.headers.common{‘ ‘}來設置公共的headers。

// 設置公共的headers
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
// 發送請求時攜帶headers
axios.get(url, {
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'authorization': AUTH_TOKEN
  }
})

三、axios設置header解決跨域

在跨域請求中,如果沒有特定的header設置,伺服器可能會拒絕請求或者出現錯誤。我們可以通過在axios設置header來解決跨域問題。

針對特定的跨域問題,我們可以根據要求設置相關的header,比如在發送跨域請求時,可以設置{‘ ‘}Origin{‘ ‘}和{‘ ‘}Referer{‘ ‘}欄位。

axios({
  method: 'post',
  url: 'http://api.example.com',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Origin': 'http://example.com',
    'Referer': 'http://example.com'
  },
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
})

四、axios設置header無效

在使用axios設置header的過程中,可能會出現設置header無效的情況。這時,需要檢查設置的header名字是否正確、大小寫是否匹配、是否存在拼寫錯誤等問題。

另外,如果有使用中間件對請求進行處理,也需要檢查中間件是否對header進行了修改。比如,一些安全中間件會禁止一些特定的請求頭,導致設置的header無效。

五、axios設置header不生效

在axios發送請求時,可能會出現設置header不生效的情況。這時,需要檢查是否存在其他配置對請求頭進行了覆蓋。

比如,在axios發送post請求時,設置請求頭為{‘ ‘}Content-Type: 'application/x-www-form-urlencoded'{‘ ‘}時,實際請求頭卻變成了{‘ ‘}Content-Type: 'application/json;charset=UTF-8'{‘ ‘}。這時,可能是因為axios默認對post請求設置了{‘ ‘}Content-Type: 'application/json;charset=UTF-8'{‘ ‘}。

解決這個問題,可以通過在請求的{‘ ‘}config{‘ ‘}中重新設置{‘ ‘}Content-Type{‘ ‘}欄位。

axios.post(url, qs.stringify(data), {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  transformRequest: [function (data) {
    // 這裡重新設置Content-Type欄位
    let newData = '';
    for (let k in data) {
      if (data.hasOwnProperty(k) === true) {
        newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&';
      }
    }
    return newData;
  }]
});

六、axios設置請求超時時間

在使用axios發送請求時,可能會遇到請求超時導致請求失敗的問題。我們可以通過在{‘ ‘}config{‘ ‘}中設置{‘ ‘}timeout{‘ ‘}參數來設置請求超時時間。

例如,下面的代碼設置請求超時時間為5000毫秒:{‘ ‘}

axios.get(url, {
  timeout: 5000
})

七、axios設置介面永不超時

在某些場景下,需要設置介面永不超時,這時可以通過設置{‘ ‘}timeout: 0{‘ ‘}來實現,表示請求永不超時。

然而,在實際生產中,一些介面可能會存在潛在的問題,如果請求一直不結束,會導致瀏覽器一直等待並且無法進行其他請求。因此,建議在使用{‘ ‘}timeout: 0{‘ ‘}前,先確認介面是否存在問題。

axios.get(url, {
  timeout: 0
})

以上就是關於axios設置header的詳細介紹,包括如何跨域設置header、如何設置固定的headers、如何解決跨域問題、如何解決設置header無效和不生效的問題、如何設置請求超時時間以及如何設置介面永不超時等方面。希望對讀者有所幫助。

原創文章,作者:FSWK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133308.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FSWK的頭像FSWK
上一篇 2024-10-03 23:58
下一篇 2024-10-03 23:58

相關推薦

  • 使用axios獲取返回圖片

    使用axios獲取返回圖片是Web開發中很常見的需求。本文將介紹如何使用axios獲取返回圖片,並從多個方面進行詳細闡述。 一、安裝axios 使用axios獲取返回圖片前,首先需…

    編程 2025-04-29
  • Axios請求數據亂碼問題解決

    本文將從以下三個方面詳細闡述Axios請求數據亂碼問題的原因和解決方法: 一、設置請求頭 Axios請求數據亂碼的原因可能是因為請求時沒有設置請求頭的編碼方式,而且默認的編碼方式是…

    編程 2025-04-28
  • 為什麼要加請求頭(HTTP Header)?

    在進行網頁抓取(Web Scraping)時,請求頭(HTTP Header)扮演著非常重要的角色。請求頭中包含了用戶代理(User Agent)、cookie、referer等信…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25

發表回復

登錄後才能評論