2015-10-14 15 views
6

Cordova'da bulunan ve Phonegap Build ile oluşturulmuş bir JavaScript uygulaması üzerinde çalışıyorum. Yapımızdaki npm'den cordova-plugin-whitelist'u ekledik ve <access origin="*" />'u config.xml ve açık bir CSP (<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">) dizinimize ekledik. Uygulama Android'de sorunsuz çalışıyor ve sunucumuzla sorun yaşamadan konuşuyor, ancak iOS'taki tüm istekler, sanki beyaz liste eklentisi trafiğe izin vermiyormuş gibi hemen başarısız oluyor.cordova-plugin-whitelist Android'de çalışıyor ancak iOS'ta değil (Phonegap Build)

Cordova'nın belirli bir sürümünde bir şeylerin kırılması durumunda çeşitli yapılandırma yapılandırmaları denedim, ancak bunu hiç işe alamadı. Geçmişte diğer Phonegap/Cordova uygulamaları ile benzer bir sorun yaşadım, ancak bunu beyaz liste eklentisi/CSP/erişim kuralı ile çözebiliyordum.

Safari Developer Tools'un iOS aygıtına bağlanmayacağı ve gördüğüm yanıtları uyardığım için bu sorunun da ayıklanması zor oldu. Geri gelen yanıtın bir durum kodu 0 ve boş bir yapıya sahip olduğu anlaşılıyor.

cevap

4

İyi örneğin, Content-Güvenlik-Politikasında bağlantı-src ayarlamak gerekebilir:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://YOUR_HOST"> 

Ayrıca/iOS 9 Xcode 7 için size bağlantılara izin vermek için ATS ayarlarını gerekecektir

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

(ayrıca bu yapılandırabilirsiniz Not:

İşte

uygulamanızın bilgileri .plist değişiklikle ilgili çalışma örnek: sigara https backends için SSL kullanmıyorsanız seçici olmayan https bağlantılarına izin verin).

#!/bin/bash 
echo "Adjusting plist for App Transport Security exception." 
val=$(/usr/libexec/plistbuddy -c "add NSAppTransportSecurity:NSAllowsArbitraryLoads bool true" platforms/ios/PROJECTNAME/PROJECTNAME-Info.plist 2>/dev/null) echo "Done" 

Sadece projenin adı için projectname takas:

Ve burada iOS otomatik olarak yapmak için bir ön inşa kanca olarak kullanabileceği bir senaryo.

+1

Ayrıca, bu kod gibi görünüyor (https://github.com/apache/cordova-plugin-whitelist/blob/r1.1.0/src/ios/CDVNavigationWhitelistPlugin.m#L85-L88) (ile etiketlendi) Sürüm 1.1.0) 9 gün önce bir [taahhüt] olarak yeniden adlandırıldı/değiştirildi (https://github.com/apache/cordova-plugin-whitelist/commit/9c2693b4ff6d98f859cbadddc9df683c508ae4a2#diff-58fc34aceb04ed0fc9c1c444fb50033fR102). Belki 1.1.0-dev 'sürümünü deneyin? – broinjc

+0

https://www.npmjs.com/package/cordova-plugin-whitelist son sürüm 6 aylık (v1.0.0) – broinjc

+0

lol - https://www.npmjs.com/package/cordova-plugin-whitelist- dev – broinjc

İlgili konular