laravel CORS 支持多点跨域访问

11 篇文章 0 订阅
php artisan make:middleware Cors
<?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)
    {
    	// Get the list of valid domains from the .ENV file
	    $validDomains = explode(',', env('VALID_CORS_DOMAINS', ''));
	    $requestingDomin = parse_url($request->server('HTTP_ORIGIN'), PHP_URL_HOST);

    	// Check to see if this domain is in an accepted list of domains
	    if ( in_array($requestingDomin, $validDomains) ) {
	    	// Domain is OK, so add the calling domain to the CORS header
		    return $next($request)
			    ->header('Access-Control-Allow-Origin', $request->server('HTTP_ORIGIN'))
			    ->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With')
			    ->header('Access-Control-Allow-Credentials', 'true')
			    ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
	    } else {
		    // Domain is not allowed, so don't send CORS header
		    return $next($request);
	    }
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`Access-Control-Allow-Origin` 是 CORS (跨源资源共享) 标头的一部分,用于允许特定来源的浏览器请求访问到服务器资源。当您使用 Laravel 框架处理 API 或其他 HTTP 请求时,有时需要设置此标头以允许多个源访问您的应用程序。 在 Laravel 中,通过中间件 `cors` 可以轻松地配置 CORS 设置。要在 `cors` 中间件配置文件(通常是 `.env` 文件或应用配置文件中)中添加 `Access-Control-Allow-Origin` 并允许多个来源,您需要按照以下步骤操作: ### 配置示例 假设您已经在 `.env` 文件中有配置了 `APP_URL`, `APP_ENV`, 等环境变量,并且使用了 `.env.example` 来帮助初始化配置。接下来,您可以按照以下步骤调整 `cors` 相关设置: 1. **打开 `.env` 文件**:找到 `laravel-cors` 的相关配置部分。 2. **修改 Cors 设置**:查找或创建类似于以下内容的设置区域: ```bash # Laravel CORS configuration APP_CORS_DOMAINS=* # Additional CORS options that allow multiple origins APP_CORS_ALLOW_METHODS="GET,POST" APP_CORS_ALLOW_HEADERS="Content-Type, Authorization" APP_CORS_ALLOW_ORIGIN="http://example.com http://another-example.com" ``` 上述例子中: - `APP_CORS_DOMAINS=*` 表示所有域都可以访问。实际应用中可能需要根据需求替换为具体的域名列表。 - `APP_CORS_ALLOW_METHODS` 允许哪些HTTP方法可以穿越CORS。 - `APP_CORS_ALLOW_HEADERS` 指定允许请求中包含哪些额外的头部信息。 - `APP_CORS_ALLOW_ORIGIN` 就是您想要添加的多个 `Access-Control-Allow-Origin` 值。 ### 应用更改 完成配置后,通常不需要重启整个服务或应用即可生效。但是,在一些情况下,可能需要刷新缓存或运行特定命令来让更改生效。例如,如果使用了 Elixir 或类似工具进行缓存清理,可能会运行如下命令: ```bash php artisan config:cache ``` 或者如果是 Laravel Mix: ```bash npm run cache-clear ``` ### 完整示例 如果您希望更精细地控制 `Access-Control-Allow-Origin` 列表,同时保持其他CORS设置,完整配置可能如下所示: ```bash # .env APP_CORS_DOMAINS=* APP_CORS_ALLOW_METHODS="GET,HEAD,PUT,POST,PATCH,DELETE" APP_CORS_ALLOW_HEADERS="Content-Type,Authorization,X-Requested-With,Accept,Origin,Cache-Control,Last-Modified" APP_CORS_ALLOW_ORIGIN="http://localhost:8000 http://www.yoursite.com http://api.yoursite.com" ``` 以上示例展示了如何在 Laravel 中配置 `Access-Control-Allow-Origin` 接受来自多个不同来源的请求。确保根据实际情况调整域名和HTTP方法、头信息等设置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值