React-native 沒法使用 xhr2-cookies

最近在學習react-native的開發並寫了一些demojavascript

由於SDK使用了 xhr2-cookies js庫,致使RN沒法發送http請求。業務要求在儘可能不更改SKD的狀況下適配RN。java

最近通過不斷排查發現Node庫中有這麼一條語句react

var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''
複製代碼

global下沒有 location 致使這條語句直接catch了 請求固然沒有發出去。git

因而我想到了兩種方式解決這個問題。github

  1. 直接更改編譯後的文件
var defaultProtocol = null;
    if (global.location) {
        defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''
    }
    else {
      defaultProtocol = 'http:'
    }
複製代碼

比較暴力,直接更改了編譯後的代碼,在判斷沒有location的時候將默認的 Protocol 配置成 'http:'react-native

由於不想這麼暴力,因此我使用了另外一種方法,在RN初始化時向 global 中注入一個 locationcookie

  1. 在初始化前注入 location

由於我同時用到了 crypto 的庫, 因此我使用了 react-native-crypto 如何使用能夠查看 react-native-crypto學習

在生成的 shim.js 文件中,手動注入了locationspa

config = {
        protocol: '' // 'https'
    }

    global.location = {
        protocol: config.protocol
    };
複製代碼

這樣請求就成功的被髮送並反回了對應的數據。code

新人第一次寫文。 若是有哪裏寫的不對或者不夠完善,歡迎各位指正。

相關文章
相關標籤/搜索