前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决 Laravel 接收非简单请求时,只有收到 OPTIONS 请求的问题

解决 Laravel 接收非简单请求时,只有收到 OPTIONS 请求的问题

作者头像
双面人
发布2020-02-24 12:18:40
1.2K0
发布2020-02-24 12:18:40
举报
文章被收录于专栏:热爱IT热爱IT

错误讯息

No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法 1

在 Laravel 安装 laravel-cors,即可解决。

composer require barryvdh/laravel-cors

解决方法 2

    引用 Laravel 处理 OPTIONS 请求的原理探索及批量处理方案

新增中间件 app\Http\Middleware\Cors.php:

    发送非简单请求时,伺服器端会先收到一个 OPTIONS 的预请求,前端只有收到这个预请求的正常回应,才会发送正式的 POST 请求。

<?php

namespace App\Http\Middleware;

use Closure;

class Cors {     /**      * Handle an incoming request.      *      * @param \Illuminate\Http\Request $request      * @param \Closure $next      * @return mixed      */     public function handle($request, Closure $next)     {         $response = $next($request);

        $response->header('Access-Control-Allow-Origin', '*');

        if ($request->getMethod() === 'OPTIONS') {             $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');             $response->header('Access-Control-Allow-Credentials', 'true');             $response->header('Access-Control-Allow-Headers', 'Authorization, Content-Type, X-PINGOTHER');         }

        return $response;     } }

开启 app\Http\Kernel.php,新增:

protected $middleware = [     ...

    \App\Http\Middleware\PrecheckCors::class, ];

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档