Allow No 'Access-Control-Allow-Origin' header is present

后台使用laravel框架,前端请求数据报错 Allow No 'Access-Control-Allow-Origin' header is present 

解决办法:

一、在App\Http\Middleware目录下新建Cors.php


    
    headers->add($headers);

        return $response;
    }
}

二、在项目配置文件config\star.php 文件中新增跨域的配置信息
/*
    |--------------------------------------------------------------------------
    | CORS跨域配置
    |--------------------------------------------------------------------------
    |
    */
    'cors' => [
        'Access-Control-Allow-Origin' => '*',
        'Access-Control-Allow-Credentials' => 'true',
        'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Cache-Control, Authorization',
        'Access-Control-Allow-Methods' => 'HEAD, GET, POST, PUT, PATCH, DELETE, OPTIONS, TRACE',
    ],

三、讲Cros.php中间件加入到App\Http\Kernel.php中
protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\Cors::class,
    ];

以上是正常请求,为了处理异常请求的返回,在App\Exceptions\Hander.php中增加header信息

$headers = config('star.cors', []);

$response->headers->add($headers);

"No 'Access-Control-Allow-Origin' header is present on the requested resource" 错误提示表示在请求的资源上没有设置 "Access-Control-Allow-Origin" 头部信息。这是由于浏览器的同源策略所导致的,即浏览器限制了不同源(域、协议、端口)之间的访问。当一个请求跨域时,如果服务器没有正确设置响应头中的 "Access-Control-Allow-Origin" 字段,浏览器会阻止该请求的执行。 为了解决这个问题,有以下几种处理办法: 1. 在服务器端设置响应头中的 "Access-Control-Allow-Origin" 字段,允许指定的域名或所有域名进行跨域访问。可以通过在服务器配置文件(如 Nginx)中添加如下配置实现: ``` add_header Access-Control-Allow-Origin *; ``` 或者 ``` add_header Access-Control-Allow-Origin http://example.com; ``` 其中, "*" 表示允许所有域名进行跨域访问,而 "http://example.com" 表示只允许该域名进行跨域访问。 2. 在服务器端设置其他相关的跨域请求头(如 "Access-Control-Allow-Methods"、"Access-Control-Allow-Headers" 等),具体根据需求进行设置。 3. 如果使用的是第三方API或服务,可以查看其文档中是否有提供相应的跨域访问配置或解决方案。 需要注意的是,在实际开发中,要确保跨域请求的安全性,不要使用 "*" 通配符允许所有域名进行跨域访问,而是根据实际需求设置具体的允许域名。这样可以有效控制访问权限,防止恶意攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值