美文网首页ionic开发Ionic Framework
使用代理解决Ionic下cros跨域问题

使用代理解决Ionic下cros跨域问题

作者: 格吾刚哥 | 来源:发表于2017-08-29 23:54 被阅读119次

    当我们在使用ionic serve 或者ionic run命令的时候,我们通常会出现类似下面的错误:

    XMLHttpRequest cannot load http://api.ionic.com/endpoint.
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    Origin 'http://localhost:8100' is therefore not allowed access.

    这就是cros跨域问题,对于跨域问题,我们通常的解决方案是修改服务端或者浏览器,但是有些时候会存在不便。为此ionic提供了一个代理的选项,以帮助我们解决这一问题。

    ionic.config.json文件,旧版本为ionic.project文件里,增加下面的配置。

    {
      "name": "proxy-example",
      "app_id": "",
      "proxies": [
        {
          "path": "/api", 
          "proxyUrl": "http://cors.api.com/api"
        }
      ]
    }
    
    • path:你在本地Ionic服务器上访问它们的路径
    • proxyUrl:你最终希望通过API调用达到的proxyUrl
      通常,我们会在代码定一个全局的常量,来设定api接口地址,我们可以配合gulp脚本来自动进行添加和替换操作
    var replace = require('replace');
    //注意下面的文件地址,它是包含你endpoint或baseurl的文件
    var replaceFiles = ['./www/js/app.js'];
    gulp.task('add-proxy', function() {
      return replace({
        regex: "http://cors.api.com/api",
        replacement: "http://localhost:8100/api",
        paths: replaceFiles,
        recursive: false,
        silent: false,
      });
    })
    gulp.task('remove-proxy', function() {
      return replace({
        regex: "http://localhost:8100/api",
        replacement: "http://cors.api.com/api",
        paths: replaceFiles,
        recursive: false,
        silent: false,
      });
    })
    

    相关文章

      网友评论

        本文标题:使用代理解决Ionic下cros跨域问题

        本文链接:https://www.haomeiwen.com/subject/uhoadxtx.html