2012-05-25 49 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服务网址。但是,我仍然遇到提及的错误。 –

相关问题