Yii2中如何允许CORS?

Posted

技术标签:

【中文标题】Yii2中如何允许CORS?【英文标题】:How to allow CORS in Yii2? 【发布时间】:2021-11-17 21:35:38 【问题描述】:

我有一个 javascript 前端,它向我的 php 后端请求纯文本。

它几乎可以正常工作,除了因为我遇到了 CORS 问题。如何在我的 PHP 代码中允许 CORS?

我的前端(JavaScript 和 jQuery):

$.ajax(
    type: 'GET',
    url: 'http://localhost:8080/',
)
.done(function(data) 
    console.log(data);
)
.fail(function() 
    alert("Oh, no. CORS error again.");
);

我的后端(PHP 和 Yii2):

$result = file_get_contents('http://m2m.exemys.com/...'); // This URL is a bit larger with more parameters.
var_dump($result); // Plain text. Just some characters.

【问题讨论】:

这能回答你的问题吗? Cross-Origin Request Headers(CORS) with PHP headers 【参考方案1】:

检查这个。 Yii2 带有开箱即用的 cors 过滤器。阅读文档以了解用法:https://www.yiiframework.com/doc/api/2.0/yii-filters-cors

【讨论】:

【参考方案2】:

Yii2 支持 CORS 处理,如 official documentation 所写。

public function behaviors()

    return [
        'corsFilter' => [
            'class' => \yii\filters\Cors::class,
        ],
    ];

或者,您可以尝试在 PHP 后端添加以下标头:

<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');

如果不行,看看https://***.com/a/9866124/11591212

【讨论】:

以上是关于Yii2中如何允许CORS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jersey 中使用 ContainerResponseFilter 允许 CORS 的多个域。?

如何 CORS 允许 Sails 中的标头

在 POST 请求中使用 Angular 和 Yii2 的 CORS 错误

如何修复“评估已被 CORS 政策阻止:反应中没有“访问控制允许来源”

Yii2验证 - 允许数字中的逗号和点

如何允许 CORS 使用多个端口?