离子怪异' Access-Control-Allow-Origin'问题

时间:2016-01-22 00:50:03

标签: android laravel ionic-framework

你好我在很多设备上构建了我的离子应用程序,它工作,然后几个小时前我试图在我的手机上运行应用程序,我注意到由于某种原因数据不是从我的网络服务器返回。所以我尝试使用ionic serve在我的计算机上运行应用程序以查看错误,我发现每次尝试发出$ http请求时,此错误都会弹出:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100'

我的应用程序已经运行了好几个星期了,我不知道是什么原因可以改变造成这种情况。我使用谷歌金丝雀进行开发,我已禁用网络安全。但即使问题出在我的浏览器上,仍然无法解释为什么应用程序现在无法在我的手机上运行。我以为它可能与新的Android更新或其他东西有关。

我最近对我的计算机所做的唯一更改是卸载我的诺顿安全防病毒软件并安装恶意软件反恶意软件和反漏洞利用。

我在服务器上安装了laravel-cors。并将设置设置为默认值,如下所示:

<?php

return [
    /*
     |--------------------------------------------------------------------------
     | Laravel CORS
     |--------------------------------------------------------------------------
     |

     | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') 
     | to accept any value, the allowed methods however have to be explicitly listed.
     |
     */
    'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['GET', 'POST', 'PUT',  'DELETE'],
    'exposedHeaders' => [],
    'maxAge' => 0,
    'hosts' => [],
];

我目前不知道发生了什么,我使用联想A6000安卓手机进行开发。 android系统webview版本是47.0.2526.100,android OS版本是5.0.2。

我刚安装了一款旧的诺基亚x&#34;安卓手机&#34;安卓版4.1,它的工作原理。

让我澄清一下,&#34;不工作&#34;我的意思是所有$ http请求,应用程序本身打开并正常工作。

2 个答案:

答案 0 :(得分:0)

作为一个快速解决方案,在 index.php

的最开头放置普通的php标题
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Key, Authorization");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, PATCH");

这适用于任何laravel版本。然后找出laravel和laravel-cors包版本并以正确的方式修复它。

答案 1 :(得分:0)

好的,我在我的帖子中描述的问题在某些设备上工作,而不是在某些设备上。我不明白为什么。

关于问题的原因,为什么会这样开始发生,我再也不知道为什么。

为了尝试解决问题,我使用以下默认设置安装了CORS:

<?php

return [
    /*
     |--------------------------------------------------------------------------
     | Laravel CORS
     |--------------------------------------------------------------------------
     |

     | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
     | to accept any value, the allowed methods however have to be explicitly listed.
     |
     */
    'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,
    'hosts' => [],
];

当上述方法无效时,我决定检查我的服务器以确保安装了 Headers 模块,因为我注意到“Access-Control-Allow-Origin”标头不在包含在我服务器的响应标题中。

然后我通过添加以下内容直接配置我的 .htaccess 文件:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials false
</IfModule>

然而,上述情况仍然没有任何影响,至少在我的 Kernel.php 文件中我已经注释掉了全局 CORS中间件。

现在效果很好。 :)