为什么我的 CORS 实现无法在 PHP 中运行?

Barbara Streisand
发布: 2024-11-04 10:24:29
原创
333 人浏览过

Why is my CORS implementation not working in PHP?

CORS 在 PHP 中不起作用:已解决的案例

实现跨源资源共享 (CORS) 以促进跨不同源的数据交换一个共同的挑战。然而,遇到与 CORS 相关的错误可能会令人沮丧。

用户最近报告在尝试从 www.siteone.com 向 www.sitetwo.com 提交表单数据时遇到 CORS 问题。尽管在目标域的“cors.php”文件中实现了所需的标头设置,但用户收到“Access-control-Allow-Origin”错误。

分析和解决方案:

检查代码和标头后发现 CORS 标头的初始实现不完整。 “cors.php”中使用的以下代码片段是不够的:

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
登录后复制

为了全面处理 CORS 请求,需要更详细的响应。以下更新的代码提供了有效的解决方案:

<code class="php">// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    exit(0);
}

echo "You have CORS!";</code>
登录后复制

结论:

通过合并允许来自任何来源的请求的附加代码行解决了 CORS 实现错误、启用凭据并设置缓存持续时间。这种增强的 CORS 处理确保了成功的跨域数据交换。

以上是为什么我的 CORS 实现无法在 PHP 中运行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!