我正在研究离子应用程序 . 我的问题是:当我尝试从服务器获取数据时,我得到了这个:
XMLHttpRequest无法加载https://mywebsite.com/api . 请求的资源上没有'Access-Control-Allow-Origin'标头 . 因此不允许原点'http://localhost'访问 .
我已经尝试将其添加到.htaccess:Header set Access-Control-Allow-Origin:*
这到我的api页面(PHP):header('Access-Control-Allow-Origin:*');
但仍然没有工作
$ http.get(url).success(function(response)
4 回答
把它放在你的PHP文件之上,如:
注意:与PHP头函数的所有使用一样,这必须在从服务器发送任何输出之前 .
这个角色问题在离子方面有一个简单的工作 .
转到你的ionic.config.json(以前的ionic.project)并添加代理例如:
之后,当你打电话给api时,请使用"/api/"而不是“https://mywebsite.com/api” .
欲了解更多信息:
http://blog.ionic.io/handling-cors-issues-in-ionic/
前提:这个问题通常只运行离子服务,或使用离子作为网络应用程序,而不是离子作为应用程序 .
您可以避免修改项目并使用扩展来禁用CORS:
对于使用chrome进行开发,可能是这样的:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related
或者,如果你需要它为firefox,这样的事情:
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
IE和Edge很糟糕,因此你必须在设置中手动禁用CORS
这是我们使用Angular和Ionic时发现的典型错误,问题出现是因为当您在应用程序的浏览器中加载的应用程序加载来自您的本地地址
http://localhost:8100
的 origin 的所有内容时,那么当您想要制作任何内容时AJAX请求发送到另一个主机而不是localhost:8100
请求从与 origin 不同的任何点调用,它需要一个 CORS (跨源资源共享)预检请求,以查看它是否可以访问该资源 .解决方案是使用代理到后端,使用此功能,您可以高举某些网址并将其发送到后端服务器 . 实施很简单:
1.-修改项目根文件夹中的文件
ionic.config.json
.2.-配置代理,在
ionic.config.json
文件中放置此代码,假设您的新主机位于http://localhost:3000
.3.-在您的服务中将您的请求的路径从此
http://localhost:3000/endpoints/any/path/that/you/use
更改为此../endpoints/any/path/that/you/use
(假设另一个主机位于localhost:3000
且上下文为/endpoints
)如果您需要更多信息,请查看http://blog.ionic.io/handling-cors-issues-in-ionic/