请求的资源 Symfony 上没有“Access-Control-Allow-Origin”标头

Posted

技术标签:

【中文标题】请求的资源 Symfony 上没有“Access-Control-Allow-Origin”标头【英文标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource Symfony 【发布时间】:2020-01-29 18:11:18 【问题描述】:

我想通过前端请求访问我的后端,但我总是收到以下错误: 从源“...”访问“...”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源。

我已经尝试使用 Nelmio Bundle 并搜索了不同的地方,但没有任何效果。我主要遵循本教程: https://codereviewvideos.com/course/beginners-guide-back-end-json-api-front-end-2018/video/symfony-4-cors-json-api

我也尝试在我的函数中使用标题,但结果是相同的错误消息:

//Controller
      $response = new Response();
            $response->headers->set('Content-Type', 'application/json');
            $response->headers->set('Access-Control-Allow-Origin', '*');

//nelmio_cors.yaml:
nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/': null

//.env File:

    ###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=^https?://.*?$
###< nelmio/cors-bundle ###

【问题讨论】:

检查你的头模块是否启用。如果您使用的是 apache sudo a2enmod header 并使用 sudo service apache2 reload 重新启动您的 apache 服务器 【参考方案1】:

我发现 Azure 提供了一个内置功能来启用和管理 CORS。这个函数似乎覆盖了我试图在我的函数中使用的 CORS 包。因此,您只需转到 azure 门户 -> 您的应用服务 -> 并单击 CORS(在 API 下)

【讨论】:

以上是关于请求的资源 Symfony 上没有“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

Angular 11 请求的资源上没有“Access-Control-Allow-Origin”标头?

请求的资源 laravel 5.8.8 上没有“Access-Control-Allow-Origin”标头

Axios - 请求的资源上没有“Access-Control-Allow-Origin”标头[重复]

Angular 5-由于请求的资源上不存在“没有'Access-Control-Allow-Origin'标头”而出现错误[重复]

如何解决 axios 中请求的资源上没有“Access-Control-Allow-Origin”标头? [复制]

如何解决请求的资源上没有“Access-Control-Allow-Origin”标头