离子问题 否 'Access-Control-Allow-Origin'
ionic problem No 'Access-Control-Allow-Origin'
我正在开发离子应用程序。
我的问题是:当我尝试从服务器获取数据时,我得到了这个:
XMLHttpRequest cannot load https://mywebsite.com/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我已经尝试将其添加到 .htaccess:
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
这是我的 api 页面 (PHP):header('Access-Control-Allow-Origin: *');
但还是不行
$http.get(url).成功(函数(响应){...}
将其放在 PHP 文件之上,例如:
<?php
header("Access-Control-Allow-Origin: *");
// then your stuff goes here
?>
注意:对于 PHP 头函数的所有使用,这必须在从服务器发送任何输出之前。
这个 cors 问题在 ionic 中有一个简单的解决方法。
转到您的 ionic.config.json(以前是 ionic.project)并添加一个代理,例如:
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/api",
"proxyUrl": "http://cors.api.com/api"
}
]
}
之后,当您调用 api.
时,请使用“/api/”而不是“https://mywebsite.com/api”
更多信息:
这是我们在使用 Angular 和 Ionic 时发现的典型错误,问题出现是因为当您的应用程序在浏览器中加载时,您的应用程序会加载来自 origin[ 的所有内容=45=] 来自您的本地地址 <a href="http://localhost:8100" rel="nofollow noreferrer">http://localhost:8100</a>
,然后当您想要将任何 AJAX 请求发送到 localhost:8100
以外的另一台主机时该请求是从不同于 origin 的任何点调用的,它需要一个 CORS(跨源资源共享)预检请求以查看它是否可以访问资源。
解决方案是使用后端代理,这样您就可以劫持某些网址并将它们发送到后端服务器。实施很简单:
1.- 修改项目根文件夹中的文件ionic.config.json
。
2.- 配置你的代理,在你的 ionic.config.json
文件里面放这个,假设你的新主机在 <a href="http://localhost:3000" rel="nofollow noreferrer">http://localhost:3000</a>
.
"proxies": [
{
"path": "/endpoints",
"proxyUrl": "http://localhost:3000"
}
]
3.- 在您的服务中,将请求的路径从 <a href="http://localhost:3000/endpoints/any/path/that/you/use" rel="nofollow noreferrer">http://localhost:3000/endpoints/any/path/that/you/use</a>
更改为 ../endpoints/any/path/that/you/use
(假设另一个主机在localhost:3000
上下文是 /endpoints
)
如果您需要更多相关信息,请查看 http://blog.ionic.io/handling-cors-issues-in-ionic/
前提:这个问题通常只是运行 ionic serve,或者使用ionic as web app,而不是ionic as app。
您可以避免修改项目并使用扩展来禁用 CORS:
为了使用 chrome 进行开发,像这样:
或者,如果你需要它用于 firefox,像这样:
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
IE 和 Edge 很烂,所以你必须在设置中手动禁用 CORS
我正在开发离子应用程序。 我的问题是:当我尝试从服务器获取数据时,我得到了这个:
XMLHttpRequest cannot load https://mywebsite.com/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我已经尝试将其添加到 .htaccess:
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
这是我的 api 页面 (PHP):header('Access-Control-Allow-Origin: *');
但还是不行
$http.get(url).成功(函数(响应){...}
将其放在 PHP 文件之上,例如:
<?php
header("Access-Control-Allow-Origin: *");
// then your stuff goes here
?>
注意:对于 PHP 头函数的所有使用,这必须在从服务器发送任何输出之前。
这个 cors 问题在 ionic 中有一个简单的解决方法。
转到您的 ionic.config.json(以前是 ionic.project)并添加一个代理,例如:
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/api",
"proxyUrl": "http://cors.api.com/api"
}
]
}
之后,当您调用 api.
时,请使用“/api/”而不是“https://mywebsite.com/api”更多信息:
这是我们在使用 Angular 和 Ionic 时发现的典型错误,问题出现是因为当您的应用程序在浏览器中加载时,您的应用程序会加载来自 origin[ 的所有内容=45=] 来自您的本地地址 <a href="http://localhost:8100" rel="nofollow noreferrer">http://localhost:8100</a>
,然后当您想要将任何 AJAX 请求发送到 localhost:8100
以外的另一台主机时该请求是从不同于 origin 的任何点调用的,它需要一个 CORS(跨源资源共享)预检请求以查看它是否可以访问资源。
解决方案是使用后端代理,这样您就可以劫持某些网址并将它们发送到后端服务器。实施很简单:
1.- 修改项目根文件夹中的文件ionic.config.json
。
2.- 配置你的代理,在你的 ionic.config.json
文件里面放这个,假设你的新主机在 <a href="http://localhost:3000" rel="nofollow noreferrer">http://localhost:3000</a>
.
"proxies": [
{
"path": "/endpoints",
"proxyUrl": "http://localhost:3000"
}
]
3.- 在您的服务中,将请求的路径从 <a href="http://localhost:3000/endpoints/any/path/that/you/use" rel="nofollow noreferrer">http://localhost:3000/endpoints/any/path/that/you/use</a>
更改为 ../endpoints/any/path/that/you/use
(假设另一个主机在localhost:3000
上下文是 /endpoints
)
如果您需要更多相关信息,请查看 http://blog.ionic.io/handling-cors-issues-in-ionic/
前提:这个问题通常只是运行 ionic serve,或者使用ionic as web app,而不是ionic as app。
您可以避免修改项目并使用扩展来禁用 CORS:
为了使用 chrome 进行开发,像这样:
或者,如果你需要它用于 firefox,像这样:
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
IE 和 Edge 很烂,所以你必须在设置中手动禁用 CORS