簡體   English   中英

React Native-Android在請求中不發送Authorization標頭

[英]React Native - Android doesn't send Authorization header in request

幾周前我開始學習React Native,並且我一直在嘗試創建我網站的移動應用程序。 唯一的問題是,在Android上並且僅在Android上,包含Authorization標頭的網絡請求不會通過。 我正在使用Axios進行網絡請求。 這是其中一個請求的示例。 該函數在componentDidMount中調用。

axios.get('https://exampleurl.com', {headers: {
        'Authorization': 'Bearer ' + value}}) 
        .then(response => {
          console.log(response);
            Alert.alert("There is a response");
            this.setState({userData: response.data.data[0]});
         })
        .catch((error) => {
            Alert.alert("There is an error", error.message);
            that.setState({accessToken: ''});
        });

我得到的答復是沒有發送訪問令牌。 是的,我確定該值不為null。 該代碼可在IoS和瀏覽器中使用。 有趣的是,如果打開了調試器,則調用可以通過並且可以正常工作。 有什么原因為什么只有Android無法使用?

服務器端是否需要配置一些東西來接收Android請求? 該服務器托管在Amazon S3上。 也許我這邊需要配置一些東西? 所有其他網絡請求都可在Axios(沒有授權頭的請求)中工作。

先感謝您!

嘗試在axios默認設置中設置令牌。 我不確定是否適合您的情況,但在遇到相同問題時對我有用。 由於您使用的是react-native,因此必須將令牌存儲在設備上(或第一次從api中檢索令牌),因此可以在axios默認設置中設置它,這樣就不必在每個axios請求上都設置它。

擁有令牌時請嘗試以下操作:

axios.defaults.headers.common['Authorization'] = 'Bearer ' + value;

如果以后對任何人有幫助,則在檢查服務器日志后,事實證明它確實發送了Authorization標頭,但每個標頭字段均以小寫形式發送。 服務器配置為僅接受授權而不接受授權,因此服務器僅返回了一個響應,即未獲得該標頭。 這僅發生在android上。 至於為什么android以小寫形式發送它,我仍然不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM