2016-11-15 108 views
1

我對提交給Apple的應用程序有問題,Apple聲稱這是由於應用程序在僅用於ipv6的網絡上運行時發生故障所致。有關ajax請求的IPV6問題

從應用程序中的JavaScript我使用XmlHttpRequest從第三方服務器獲取數據,我認爲問題可能是第三方服務器沒有正確處理來自ipv6網絡的請求。

蘋果告訴我的是確保我正確處理它,而且服務器支持ipv6請求。問題是我沒有控制我們用來獲取數據的第三方服務器。我試着對服務器運行一個在線ipv6兼容性測試,並向我展示了一些可能的原因:第一個DNS服務器正在返回一個AAAA記錄,而另一個則不是。據我瞭解,這可能會導致客戶端認爲服務器支持ipv6,即使它實際上不支持。這似乎是請求失敗的可能原因嗎?

ipv6 test

下一個問題是,如果有什麼我可以在客戶端做迫使通信中,即使客戶端網絡上運行IPv6的IPv4的貫徹。這裏是我的代碼,這是非常簡單的:

var xhr = new XMLHttpRequest(); 
xhr.responseType = "document"; 

xhr.addEventListener("load", function() { 
    callback(xhr.responseXML); 
}, false); 

xhr.open("GET", url, true); 
xhr.send(); 

希望有人能幫助我闡明這整個IPv6的頭痛輕一些,因爲網絡是不是我的專業領域。我只需要獲得這些請求的工作,所以該應用程序可以被蘋果公司接受。

+0

究竟蘋果說的是什麼問題? –

+0

他們只說在ipv6網絡上運行時該應用程序失敗,並且從它們發送的屏幕截圖看來,它似乎是失敗的ajax請求。所以我們沒有更具體的東西,不幸的是。 –

回答

2

如果通過IPv6無法訪問服務器,那麼必須(使用RFC 2119措辭)成爲DNS中的AAAA記錄。如果存在,那麼來自IPv6網絡的請求將失敗。由於Apple NAT64仿真的工作方式,在使用其測試設置時可能不太明顯,但它會在實際的NAT64網絡上中斷。

或者反過來說:如果AAAA記錄存在,那麼它們必須包含有效地址,並且連接到該地址必須有效。