2011-01-19 23 views
14

tôi về để phát triển một ứng dụng dành cho iPhone sử dụng Sencha cảm ứng + PhoneGap và tôi có một vài câu hỏi rất cơ bản:Sencha + PhoneGap

1) Tôi muốn đọc một tập tin XML mà là ở vị trí http://abc.om/app/a3/. Tôi đã sử dụng Sencha để đọc xml này nhưng nó cho tôi lỗi sau:

XMLHttpRequest cannot load the url. Origin is not allowed by Access-Control-Allow-Origin.

Đây có phải là phương pháp/phương pháp phù hợp để sử dụng Sencha để đọc XML không? Nếu có, thì làm cách nào để giải quyết vấn đề trên? Có người nói rằng Sencha là phía khách hàng, và nó không thể đọc được Xml ngoài miền - điều này có đúng không? Điều gì xảy ra trong một ứng dụng di động? Tôi có nên sử dụng Phonegap ở đây không?

2) Khi tôi đang phát triển một ứng dụng cho iPhone, tôi nên kiểm tra ứng dụng - bằng cách sử dụng Chrome như thế nào? Hoặc sử dụng phonegap mỗi lần và sau đó kiểm tra nó trên iPhone?

+4

Kính thưa 'user580950', xin vui lòng quan tâm để chấp nhận câu trả lời nếu nó giúp. –

Trả lời

35

Nói chung, các ứng dụng PhoneGap không bị hạn chế về bảo mật tên miền chéo khi chúng được triển khai cho thiết bị di động. Lý do cho điều này là khác nhau tùy thuộc vào nền tảng mà bạn đang phát triển, nhưng đối với iPhone, đó là do các tài sản PhoneGap cục bộ của bạn được tải vào trình duyệt trên iPhone bằng cách sử dụng URI file:///; điều này cho phép bạn vượt qua giới hạn bảo mật tên miền chéo. Nếu bạn đang tạo trang web thông thường đang được lưu trữ trên máy chủ thì bạn bị hạn chế bởi chính sách bảo mật này. Đây là một trong những lợi ích của việc tạo ra các ứng dụng PhoneGap.

  1. Tôi không quen thuộc với Sencha, nhưng bạn có thể sử dụng bất kỳ khung công tác nào trên đầu đối tượng XMLHttpRequest cơ bản để thực hiện giao tiếp miền chéo trong PhoneGap. Có thể là Sencha, jQuery, xui, MooTools, v.v.

  2. Để thử nghiệm các ứng dụng PhoneGap, tôi thường sử dụng kết hợp trình duyệt trên máy tính để bàn và một số công cụ bổ sung để trợ giúp tôi. Trong trường hợp của bạn, nếu bạn tải ứng dụng PhoneGap của bạn cục bộ trên máy tính của bạn vào một trình duyệt như Safari (cho phép bạn thực hiện XHRs khỏi số file:/// URI), bạn sẽ không thấy các vấn đề về tên miền chéo. Safari là một trong số ít các trình duyệt cho phép bạn thực hiện việc này. Ngoài ra, bạn có thể sử dụng một proxy trên máy tính địa phương của bạn và có máy chủ web địa phương của bạn làm cho các yêu cầu mạng và proxy chúng trở lại ứng dụng của bạn. Tôi có xu hướng sử dụng một công cụ tuyệt vời được gọi là sleight, là máy chủ web node.js sẽ yêu cầu đảo ngược proxy tới tên miền bên ngoài mục tiêu nếu máy chủ không thể tìm thấy nội dung được yêu cầu cục bộ trên máy tính của bạn. Tôi sẽ cố gắng đặt ra một ví dụ về sử dụng sleight cho bạn:

    • Giả sử tài sản ứng dụng PhoneGap của bạn đều nằm trong ~/src/www, với các ứng dụng đang ở index.html
    • Cũng giả sử bạn muốn truy cập vào miền abc.com từ ứng dụng PhoneGap của bạn

bạn sẽ sử dụng sleight như thế này:

$ cd ~/src/www 
$ sleight target=abc.com 

Bây giờ bạn có một máy chủ web cục bộ đang chạy phục vụ tất cả nội dung trong thư mục www của bạn. Từ trang index.html của bạn ngay bây giờ, bạn có thể gửi XHR tới http://abc.om/app/a3/ và chế độ xem nhẹ sẽ ủy quyền lại cho bạn. Vì vậy, bạn có thể trỏ trình duyệt của mình đến http://localhost:8088/index.html và bạn sẽ nhận được index.html của ứng dụng PhoneGap.

Sleight là một công cụ tuyệt vời để phát triển PhoneGap vì nó cho phép bạn kiểm tra các ứng dụng PhoneGap khi đang di chuyển cục bộ trên máy tính của mình.

+0

Câu trả lời tuyệt vời bạn đá !!! :) Tôi đã có thể sắp xếp nó ra .. cảm ơn rất nhiều cho sự giúp đỡ của bạn – user580950

+0

nếu bạn có thể chấp nhận câu trả lời tôi sẽ đánh giá cao nó sau đó :) –

+0

Tôi muốn cung cấp cho câu trả lời của bạn +2, stackoverflow tuy nhiên không cho tôi :) –

6

Về câu hỏi # 2: Bạn có thể sử dụng "chrome --disable-web-security" để bỏ qua giới hạn cùng tên miền và chạy ứng dụng Phonegap của bạn.

Chỉnh sửa: Giống như Chrome phiên bản 48, bạn cũng nên thêm cờ "--user-data-dir". Xem this question.