2011-01-19 175 views
14

我將要開發使用煎茶觸摸+的PhoneGap的iPhone應用程序,我有一些非常基本的問題:煎茶+ PhoneGap的

1)我想讀一個XML文件,該文件是在該位置http://abc.om/app/a3/。我用煎茶讀取此XML,但它給我以下錯誤:

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

這是正確的方法/使用煎茶用於讀取XML?如果是,那我該如何解決上述問題?有人說Sencha是客戶端,它不能將Xml讀出域 - 這是真的嗎?移動應用程序會發生什麼?我應該在這裏使用Phonegap嗎?

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

+4

親愛的`user580950`,請介意接受的答案,如果它幫助。 – 2011-04-11 06:17:43

回答

35

一般而言,PhoneGap應用程序在部署到移動設備後不會受到跨域安全限制。其原因根據您開發的平臺而不同,但對於iPhone而言,這是因爲您的本地PhoneGap資產使用file:/// URI加載到iPhone上的瀏覽器中;這可以讓您避開跨域安全限制。如果您正在創建一個正在服務器上託管的常規網站,那麼您的是受此安全策略限制的。這是創建PhoneGap應用程序的好處之一。

  1. 我不熟悉煎茶100%,但可以在基本的XMLHttpRequest對象做PhoneGap的跨域通信的頂部使用什麼框架。無論是Sencha,jQuery,xui,MooTools等。

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

    • 讓我們假設你的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應用程序。

+0

很棒的回答你搖滾! :)我能夠解決它..非常感謝您的幫助 – user580950 2011-01-24 13:05:08

6

關於問題2: 您可以使用「chrome --disable-web-security」繞過同域限制並運行phonegap應用程序。

編輯:至於Chrome版本48,您還應該添加標誌「--user-data-dir」。請參閱this question.