关于ionic跨域问题
发布于 2年前 作者 erguotou520 3437 次浏览 来自 问答

我看了论坛里面的那篇跨域的文章,但是对于我的需求不是很符合,我需要的是动态的代理,也就是说我具体要访问哪个API地址是不确定的,是要用户输入的,然后根据用户输入的地址去请求。所以那篇文章中的第一种方法肯定不合适,第二种方法不知道行不行,但是看上去好像很麻烦的样子,我试都没打算试一下。。。 比较理想的是调用cordova的方法,用cordova去做代理,但是现在好像没有?

12 回复

虽然说在真机上不会有跨域问题,但是我在手机上运行请求自愿的时候还是出错了,我无法判断是不是跨域的问题

@erguotou520 真机调试是不存在跨域问题的,浏览器调试的话你可以试试@unwarsky推荐的 chrome 插件“Allow-Control-Allow-Origin”

嗯 我后来又试过几次。chrome上可以了,但是真机上用$http.get访问网址的时候请求一直挂起,无法发送 产生跟跨域一样的错误表现

@erguotou520 Hey哥们,这个问题后来搞定了吗? 能不能说一下

@erguotou520 看一下真机输出的日志吧,确认你的cordova不是5.0版本的

请教 最后解决方案是 可以具体说什么!

cordova plugin add cordova-plugin-whitelist,

同时在config.xml中增加:

<allow-intent href="*" />

<allow-navigation href="*" />

手机端没有跨域的问题,当然我们在pc端做测试需要考虑跨域的问题,这种情况下我觉得有2种方式可以快速设置跨域访问: 1.设置客户端机器浏览器允许跨域访问; 2.测试服务器允许跨域请求;

google-chrome --disable-web-security

如果你的服务器端语言是PHP,在脚本里设置成这样,从浏览器访问时,是可以跨域的,具体看代码里的链接,亲测是可用的。

<?php
//http://stackoverflow.com/questions/18382740/cors-not-working-php
if (isset($_SERVER['HTTP_ORIGIN'])) {
   header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
   header('Access-Control-Allow-Credentials: true');
   header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests if ($_SERVER[‘REQUEST_METHOD’] == ‘OPTIONS’) {

if (isset($_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_METHOD’])) header(“Access-Control-Allow-Methods: GET, POST, OPTIONS”);

if (isset($_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_HEADERS’])) header(“Access-Control-Allow-Headers: {$_SERVER[‘HTTP_ACCESS_CONTROL_REQUEST_HEADERS’]}”);

exit(0); }

//http://stackoverflow.com/questions/15485354/angular-http-post-to-php-and-undefined $postdata = file_get_contents(“php://input”);

@zxyuns 在浏览器上调试时用“Allow-Control-Allow-Origin”插件,真机没有问题

@hacker-looper 在浏览器上调试时用“Allow-Control-Allow-Origin”插件,真机没有问题

回到顶部