ionic2常见问题Ionic2Ionic

ionic2/ionic1常见问题-跨域(No 'Acc

2017-01-06  本文已影响5056人  昵称已被使用_

问题描述

如下图所示,当我们的app请求后台服务时,就会出现浏览器跨域问题


翻译:已被CORS策略阻止:在请求的资源上不存在“Access-Control-Allow-Origin”头。 因此,不允许原始'http:// localhost:8100'访问

什么是跨域

什么时候会出现跨域问题

最新版的ionic ios app使用了wkwebview在真机上是存在跨域请求的.所以解决跨域需要使用后台手段(以下方法3和方法4)或者使用native http插件

解决跨域问题

方法一:安装chrome跨域插件

图 2,启用跨域插件

方法二:设置代理

执行ionic serveapp运行在http://localhost:8100/, 所以只有请求地址是localhost并且端口是8100时才不会有跨域问题
具体设置代码如下图,其中Constants.tsLoginService.ts是我的业务代码,重点是配置ionic.config.json


     {
        "name": "ionic2_tabs",
         "app_id": "",
         "typescript": true,
         "v2": true,
         "proxies": [
           {
             "path": "/app",
             "proxyUrl": "http://88.128.18.144:7777/app"
           },
           {
             "path": "/kit_file_server",
             "proxyUrl": "http://88.128.18.144:3333/kit_file_server"
           }
         ]
       }
注意

方法三:后台服务端设置

        MultivaluedMap<String, Object> headers = responseContext.getHeaders();

        headers.add("Access-Control-Allow-Origin", "*");
        //headers.add("Access-Control-Allow-Origin", "http://abcd.org"); //allows CORS requests only coming from abcd.org
        headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS");
        headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia, Authorization,token");

方法四:使用nginx

最后

相关文章:跨域资源共享 CORS 详解

上一篇 下一篇

猜你喜欢

热点阅读