簡體   English   中英

Sencha + PhoneGap

[英]Sencha + PhoneGap

我即將使用Sencha Touch + PhoneGap為iPhone開發應用程序,我有一些非常基本的問題:

1)我想讀取位於http://abc.om/app/a3/位置的XML文件。 我使用Sencha來讀取這個xml,但它給了我以下錯誤:

XMLHttpRequest無法加載url。 Access-Control-Allow-Origin不允許使用Origin。

這是使用Sencha讀取XML的正確方法/方法嗎? 如果是,那我該如何解決上述問題呢? 有人說Sencha是客戶端,它無法讀取域外的Xml - 這是真的嗎? 移動應用程序會發生什么? 我應該在這里使用Phonegap嗎?

2)在我為iPhone開發應用程序時,我應該如何檢查應用程序 - 使用Chrome? 或者每次使用phonegap然后在iPhone上查看?

通常,PhoneGap應用程序在部署到移動設備后不會受到跨域安全限制的影響。 原因各不相同,具體取決於您正在開發的平台,但對於iPhone,這是因為您使用file:/// URI將本地PhoneGap資產加載到iPhone上的瀏覽器中; 這允許您繞過跨域安全限制。 如果您正在創建正在服務器上承載正規的網站,那么你這種安全策略限制。 這是創建PhoneGap應用程序的好處之一。

  1. 我不是100%熟悉Sencha,但您可以使用基本XMLHttpRequest對象之上的任何框架在PhoneGap中進行跨域通信。 無論是Sencha,jQuery,xui,MooTools等。

  2. 為了測試PhoneGap應用程序,我通常使用桌面瀏覽器和一些額外工具的組合來幫助我。 在您的情況下,如果您將計算機本地的PhoneGap應用程序加載到Safari之類的瀏覽器(允許您從file:/// URI中刪除XHR),您將看不到跨域問題。 Safari是少數允許您執行此操作的瀏覽器之一。 或者,您可以在本地計算機上使用代理,讓本地Web服務器發出網絡請求並將其代理回應用程序。 我傾向於使用一個名為sleight的強大工具,它是一個node.js Web服務器,如果服務器無法在您的計算機上本地找到所請求的資產,它將反向代理對目標外部域的請求。 我將嘗試為您設置一個使用sleight的示例:

    • 假設您的PhoneGap應用程序資產位於〜/ src / www下,應用程序位於index.html中
    • 還假設您要從PhoneGap應用程序訪問abc.com域

你會像這樣使用:

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

現在,您運行的本地Web服務器可以提供www目錄下的所有內容。 現在,您可以從index.html頁面將XHR發送到http://abc.om/app/a3/ ,並且可以將這些內容代理給您。 因此,您可以將瀏覽器指向http:// localhost:8088 / index.html,然后您將獲得PhoneGap應用程序的index.html。

Sleight是PhoneGap開發的絕佳工具,因為它允許您在計算機上本地測試您的PhoneGap應用程序。

關於問題#2:您可以使用“chrome --disable-web-security”來繞過相同的域限制並運行您的phonegap應用程序。

編輯:與Chrome版本48一樣,您還應添加標記“--user-data-dir”。 看到這個問題。

關於問題#2,Ronenz的回答是有效的。

您還可以找到Chrome的幾個擴展程序。
例如,我正在使用這個,易於啟用和禁用:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM