首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子怪异的“访问-控制-允许-来源”问题

离子怪异的“访问-控制-允许-来源”问题
EN

Stack Overflow用户
提问于 2016-01-22 00:50:03
回答 2查看 1.2K关注 0票数 1

你好,我在很多设备上建立了我的离子型应用程序,但就在几个小时前,我试图在我的手机上运行这个应用程序,我注意到由于某种原因,我的web服务器上没有返回数据。因此,我试着用ionic serve在我的电脑上运行这个应用程序,看看出了什么问题。每当我试图提出$http请求时,我都注意到这个错误不断弹出:

代码语言:javascript
复制
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100'

我的应用程序已经运行了几个星期了,我不知道是什么改变了它。我使用谷歌金丝雀进行开发,我已经禁用了网络安全。但即使问题是我的浏览器,这仍然不能解释为什么应用程序不能在我的手机,特别是现在。我在想,这可能与新的android更新有关。

我最近对我的计算机所做的唯一改变是卸载我的norton安全杀毒软件和安装malware字节、防恶意软件和防攻击。

我已经在服务器上安装了龙骨。并将设置设置为默认值,如下所示:

代码语言:javascript
复制
<?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操作系统版本为5.0.2。

我刚刚在一个旧的诺基亚x "android手机“上安装了这个应用程序,它的android版本为4.1,而且工作正常。

让我澄清一下,我所说的“不工作”指的是所有的$http请求,应用程序本身打开并正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-29 15:02:13

好吧,我的问题,正如我在我的文章中所描述的,工作在一些设备上,而不是在一些设备上。我不知道为什么。

至于问题的起因,为何会出现这种情况,我再一次也不知道原因。

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

代码语言:javascript
复制
<?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' => [],
];

当上面的内容不起作用时,我决定检查我的服务器,以确保安装了 header 模块,因为我注意到来自服务器的响应头中没有包含“访问控制-允许-原产地”标头。

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

代码语言:javascript
复制
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials false
</IfModule>

但是,至少直到我在我的Kernel.php文件中注释掉了全局Kernel.php CORS中间件之后,上述仍然没有任何区别。

它现在工作得很好。:)

票数 0
EN

Stack Overflow用户

发布于 2016-01-22 02:07:16

作为快速修复,将普通php头放在index.php的开头。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34937165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档