2012-05-25 92 views
1

我有一個JQuery Mobile應用程序。這個應用程序需要打一個遠程Web服務。當我從本地文件系統運行應用程序時,該應用程序加載正常。但是,當我點擊一個按鈕時,我嘗試與Web服務交互。當我試圖打的web服務,我看到上面寫着控制檯的錯誤:從PhoneGap中的JQuery Mobile應用程序打到Web服務

XMLHttpRequest cannot load https://www.mydomain.com/myService/myAction. Origin null is not allowed by Access-Control-Allow-Origin 

我試着打下面的代碼服務:

var vm = getParameters(); 
$.ajax({ 
    url: https://www.mydomain.com/myService/myAction, 
    type: "POST", 
    data: JSON.stringify(vm), 
    contentType: "application/json", 
    success: action_Succeeded, 
    error: action_Failed 
}); 

我在做什麼錯?我在這篇文章中嘗試了一切,沒有任何運氣:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

我的應用程序在我通過Visual Studio運行時工作。我的直覺是,它在當時的web服務器環境中運行。不過,我想通過PhoneGap部署這個。因此,在Web服務器環境中運行是不可能的。這就是爲什麼我想通過我的本地文件系統運行它,一切正常,我應該很好。我究竟做錯了什麼?

非常感謝!

回答

1

檢查config.xml文件(如果你使用的PhoneGap構建服務 - 否則檢查的iOS,AndroidManifest.xml中的Android。該文件的.plist),並加入這一行:

<access origin="*" /> 

如果一切正常,那麼你可以嘗試設置更嚴格的訪問規則,如:

<access origin="https://mydomain.com" subdomains="true" /> 

並在您的服務器端,你需要回到這個HTTP標頭:

Access-Control-Allow-Origin: * 
+0

非常感謝您的回覆。我仍然有點困惑。沒有你上面提到的東西,該應用程序在我的開發環境中工作。當我將它推送到我在Web上使用的測試環境中時,它就可以工作。然而,當我有本地文件嘗試擊中測試環境中託管的Web服務時,它不起作用。你能解釋爲什麼嗎?非常感謝。 –

+0

你的開發/測試環境是什麼?是從桌面瀏覽器運行你的頁面? 「本地文件」是什麼意思? 當您的頁面位於phonegap容器內(在Android,iOS等應用程序中運行它時),需要上述配置。 – chrisben

+0

在我的應用程序的第一頁上,我點擊了一個Web服務。這在我的DEV env中運行良好,它在Visual Studio啓動的DEV Web服務器上運行。然後我將整個項目推廣到我們的TESTING Web服務器(一個IIS 7)中運行。該應用程序在那裏工作罰款。然後,當我嘗試通過電話模擬器打開服務時,它不起作用。由於PhoneGap作爲本地文件加載(http://jquerymobile.com/demos/1.1.0/docs/pages/phonegap.html),因此我決定在Chrome中從本地計算機打開index.html文件。我確保它指向了TEST服務網址。但是,我仍然遇到提及的錯誤。 –

相關問題