gpt4 book ai didi

angularjs - ionic 应用程序无法使用 $http 连接启用了 cors 的服务器

转载 作者:可可西里 更新时间:2023-11-01 15:09:59 26 4
gpt4 key购买 nike

我正在尝试使用 ionic 框架构建移动应用程序。当我的应用程序尝试连接服务器以获取 json(服务器是 web api 并且启用了 cors)时,它只会在 genymotion 和真实设备上返回 404。但是当我在浏览器中使用 ionic serve 运行应用程序时一切正常。

我很确定 CORS 可以正常工作。这是我在浏览器中运行应用程序时获得的响应 header 。

响应

Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:395
Content-Type:application/json; charset=utf-8
Date:Fri, 08 May 2015 20:24:04 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/7.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

请求:

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, lzma, sdch
Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:*******:14400
Origin:http://192.168.0.28:8100
Pragma:no-cache
Referer:http://192.168.0.28:8100/

Config.xml 有 <access origin="*"/>配置中的这一行

在我的 app.js 中,我删除了所有 http 调用的 X-Requested-With header 。

.config(['$httpProvider', function($httpProvider) {

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
])

我在我的工厂类中简单地使用 get 请求到服务器。

$http.get(serverPath + "/api/mobilerest/mainPage");

当我在 Genymode 或真实设备中运行应用程序时,响应为 404 并且 statusText 为“未找到”。我很确定 web api 正在工作,这种行为的原因是基于 ionic 的应用程序,我的应用程序是本地文件并且协议(protocol)是 file:///所以 Origin header 在请求中为空,然后服务器返回 404。我也试过没有任何服务器的本地文件我得到与应用程序相同的错误。

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:server:14400
Origin:null
Pragma:no-cache

我错过了什么吗?

最佳答案

cordova-plugin-whitelist目前似乎是“强制性的”。

安装它:

cordova plugin add cordova-plugin-whitelist

配置config.xml

您可以使用 * 保留当前设置或更改为更严格的规则

添加 html 策略在 index.html 上,您还应添加一个策略。要授权一切,这里是:

 <meta http-equiv="Content-Security-Policy" content="default-src *;
style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'
'unsafe-eval'"

关于angularjs - ionic 应用程序无法使用 $http 连接启用了 cors 的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com