You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中为跨源资源共享(CORS)请求正确配置指定多域名访问权限?

如何在PHP中为跨源资源共享(CORS)请求正确配置指定多域名访问权限?

嘿,我来帮你搞定这个CORS多域名配置的问题!

你之前的代码是直接把Access-Control-Allow-Origin设为单个域名,这种写法只能支持一个源。但要同时允许指定的多个域名,可不能直接在这个头里写多个域名哦——因为浏览器规定这个响应头的值只能是单个域名、*(通配符,允许所有)或者null,写多个的话浏览器会直接拦截请求。

正确的做法是动态匹配请求的源,步骤很清晰:

  • 先把所有允许访问的域名存到一个数组里,方便后续校验
  • 获取当前请求的Origin头(这是浏览器发送请求时带过来的,标识请求来自哪个域名)
  • 检查这个请求源是否在我们的允许列表里,如果在,就把这个源设置到Access-Control-Allow-Origin头里;如果不在,浏览器会自动阻止跨域请求,你也可以额外返回403状态码来明确拒绝

给你整理好的完整代码:

<?php
error_reporting(0);

// 定义允许访问的域名列表
$allowedOrigins = [
    'http://example1.com',
    'http://example2.com',
    'http://example3.com',
    'http://example4.com'
];

// 安全获取请求的Origin头,避免未设置时出现报错
$requestOrigin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';

// 校验请求源是否在允许范围内,是的话就设置对应的响应头
if (in_array($requestOrigin, $allowedOrigins)) {
    header("Access-Control-Allow-Origin: $requestOrigin");
}

// 保留你原来配置的其他CORS规则
header('Access-Control-Allow-Methods: POST');
header("Access-Control-Allow-Headers: Content-Type, Accept");
?>

这样配置后,只有你指定的四个域名发起的跨域请求才会被服务器允许,完美解决你的需求~

备注:内容来源于stack exchange,提问作者Nancy Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:39:33