当前位置: 首页 > 面试题库 >

ionic应用程序无法将启用了cors的服务器与$ http连接

郑富
2023-03-14
问题内容

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

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

响应

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标头。

.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可以正常工作,导致这种现象的原因是在基于离子的应用程序中,我的应用程序是本地文件,协议是file:///,所以Origin标头在请求中为null,然后服务器返回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

您可以将当前设置保留为*或更改为更多限制性规则

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

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


 类似资料:
  • 我正在尝试连接节点。js micro服务和使用zuul服务器(api网关)的spring boot应用程序。 zuul应用程序。属性: 节点js eureka配置 当我尝试转到eureka上zuul(api网关)的URL时,我遇到了以下错误: 负载平衡器没有可用于客户端的服务器:节点简单

  • 你好,我是爱奥尼亚的新手。我想打电话给爱奥尼亚的邮政服务,但我总是遇到这个错误;"" 加载失败http://mywebservice.com/api:对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“包括”时,响应中的“访问控制允许原点”标头的值不得为通配符“*”。起源http://localhost:8100因此不允许访问。XMLHttpRequest发起的请求的凭据模式由withCre

  • application.properties:这是spring mvc应用程序,应用程序使用带有两个数据库的MySQL db 我阅读了创建dockerfile和docker-compose文件的文章https://medium.com/@asce4s/dockerize-spring-mvc-application-a9ffbd11eadb https://github.com/abagayev/

  • 我的应用程序,使用套接字。io,无法连接到节点。js服务器。 服务器node.js Android应用程序: 当我连接到服务器时,服务器不会说“socket.name connected”,也不会发出事件“sensorChanged”。问题出在哪里?

  • 问题内容: 当我运行Spring MVC应用程序时,出现此异常,服务器无法启动。 请帮助我解决此问题。 异常StackTrace: 问题答案: 由于互联网连接不良,jar文件可能已损坏。尝试删除文件夹的内容。然后右键单击您的项目,选择“Maven” ,“ 更新项目” ,然后选中“ 强制更新快照/版本” 。如果您确定只有一个Jar文件有问题,则只需删除其文件夹。

  • 问题内容: 在Fedora 10上编译。 我刚刚启动了我的第一个qt GUI应用程序。我使用了所有默认设置。 它只是一个简单的形式。它构建良好,没有任何错误。但是当我尝试运行该应用程序时。我收到以下消息: 感谢您的任何建议, 问题答案: 造成这种情况的一般原因如下: 未在环境中设置DISPLAY。 解决方案 : (不过,这似乎不是错误的那个,因为它说X试图连接到它。而且,它并不总是0.0,但大多数