2010-08-24 36 views
5

Tôi có một ứng dụng mà html/mã javascript thực hiện tốt trong một safari trình duyệt độc lập, nhưng khi các cuộc gọi ajax được thực hiện trong PhoneGap, tất cả họ đều thất bại với Lỗi Mạng 101.PhoneGap có hỗ trợ các yêu cầu HTTPS ajax không?

Tôi yêu cầu tài liệu XML

+1

AFAIK PhoneGap có thể hỗ trợ các yêu cầu HTTPS nhưng nhiều người gặp vấn đề với chứng chỉ tự ký. Có phải iPhone hoặc Android bạn đang chạy với PhoneGap không? – irishbuzz

Trả lời

6

Có.

NHƯNG, nó không xử lý các lỗi chứng chỉ một cách duyên dáng bằng giao thức HTTPS. Tôi đã kết thúc việc viết mã của riêng tôi để thiết lập kết nối ban đầu với máy chủ và bỏ qua những lỗi cert

ở đây là mã http://blog.clearlyinnovative.com/post/1012434483/phonegap-and-iphone-development

+1

Điều này vẫn còn tồn tại? Nó 404 của –

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ có liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi – John

1

PhoneGap không hỗ trợ HTTPS ajax yêu cầu, nhưng cũng giống như Aaron đề cập đến nó không duyên dáng xử lý lỗi chứng chỉ. Trong trường hợp của tôi, chúng tôi có các chứng chỉ hợp lệ trong môi trường sản xuất của chúng tôi; nhưng đối với môi trường dev của chúng tôi, chúng tôi đã vượt qua một trong các phương pháp của NSUrl:

@implementation NSURLRequest (IgnoreSSL) 

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 

@end 

Điều này đã được thử nghiệm với điện thoại 1,7 (và 1,9) và nó hoạt động tốt. Bạn có thể đặt mã này trong MainViewController.m.

Lưu ý rằng tôi chỉ khuyến nghị mã này cho môi trường phát triển. Điều này rất có thể sẽ không được cửa hàng ứng dụng chấp nhận; vì chúng tôi đang ghi đè một api riêng tư. Chỉ cần sử dụng certs hợp lệ trong sản xuất.

+0

Nó không hoạt động với Cordova 1.5 và Xcode 4 (phương thức allowAnyHTTPSCertificateForHost không bao giờ được gọi) –

+0

Tôi vẫn đang sử dụng mã này trong môi trường của mình tốt (lưu ý rằng tôi đang chạy Cordove 1.9 bây giờ). Vì vậy, có một cơ hội này không hoạt động với Cordova 1.5; nhưng từ nhanh chóng liếc qua các bảng thảo luận của Apple; điều này đã được hỗ trợ trong một thời gian. Chỉ cần chắc chắn rằng bạn đặt nó trên "@implementation MainViewController" của bạn. – Aki

Các vấn đề liên quan