离子奇怪'访问控制允许来源'问题

问题描述:

你好我建立了我的离子应用程序,它的工作,在很多设备上,然后就在几个小时前我试图在我的手机上运行应用程序,我注意到由于某些原因,数据并未从我的Web服务器返回。于是,我就用ionic serve,看看有什么是错的我的电脑上运行的应用程序,我注意到了这个错误不停每次我试图让一个$ HTTP请求时弹出:离子奇怪'访问控制允许来源'问题

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

我的应用程序已经为运行完美现在几个星期,我不知道可能会改变什么导致这种情况。我使用谷歌金丝雀进行开发,我禁用了网络安全。但即使问题出在我的浏览器上,仍然无法解释为什么该应用程序现在不适用于我的手机。我认为这可能与新的android更新或某事有关。

我最近对我的电脑所做的唯一更改是卸载我的诺顿安全防病毒软件,并安装malwarebytes反恶意软件和反利用。

我在我的服务器上安装了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手机的发展。 Android系统的webview版本是47.0.2526.100,android操作系统版本是5.0.2。

我刚刚安装了应用程序的旧版诺基亚x“android手机”与4.1版的Android版本,它的工作原理。

让我澄清,通过“不工作”我的意思是所有$ http请求,应用程序本身打开并正常工作。

+0

把这个添加到你的php文件中(在 Tasos

+0

其实我使用laravel所以我有相当数量的.php文件,试图将其添加到我的主要index.php文件中,并且api返回了500内部服务器错误。 – user3718908

+0

然后我不知道。我有确切的问题,由于使用IP地址,而不是我的服务器的域名,并且该行允许任何起源标题,但是,然后再次即时通讯不使用PHP框架 – Tasos

好吧,我的问题就像我在我的文章中描述的那样在一些设备上工作,而不是在某些设备上工作。我不知道为什么。

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

在试图尝试解决我用下面的默认设置安装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' => [], 
]; 

当以上没有工作,我决定来检查我的服务器,以确保我有模块安装,因为我注意到“Access-Control-Allow-Origin”头没有被包含在我的服务器的响应头中。

我接着就直接配置我的.htaccess文件中加入这样的:

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

但是上面还是没任何区别,至少不是直到我在注释掉全球 CORS中间件我的Kernel.php文件。

它现在完美。 :)

作为速战速决,把普通的PHP头在的index.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软件包版本,并以适当的方式修复此问题。

+0

当我这样做,现在我只得到一个403禁止的错误,但我应该指出,我说它曾经与我的浏览器和我的手机一起工作,但即使它现在可能无法工作,现在它可以在其他设备上工作。 – user3718908

+0

明星*在某些情况下可能无法正常工作,请尝试指定实际的域名。此外,使用邮递员检查实际的回复,您可以发送与邮递员完全相同的请求,就像您在设备上一样。 – vitr

+0

真实域名?在这种情况下,由于直接从手机发出请求,实际的域名是什么。 – user3718908