graycoreio / magento2-cors

A Magento 2 module that enables configurable CORS Headers on the GraphQL and REST APIs
https://packagist.org/packages/graycore/magento2-cors
MIT License
85 stars 31 forks source link

[OTHER] How to use on Magento Cloud #78

Closed rahulblue closed 4 weeks ago

rahulblue commented 1 year ago

We have tried to installed your module into Magento Cloud, We followed all initial steps which you given. we were trying to add system variable which you mentioned here - https://github.com/graycoreio/magento2-cors/blob/master/docs/stories/configuring-the-headers.md, but in Magento cloud env.php file is not editable, also there isn't any provision to add system variable into anywhere.

Do you have any other solution for adding all values under system? adding somewhere in config or .php file?

Environment

magento2-cors version: 1.6.0 Magento version: Magento Commerce 2.4.5 PHP Version version: 8.1

damienwebdev commented 1 year ago

@rahulblue you can make this work by using the cloud UI for managing ENV settings.

The relevant document would be:

https://experienceleague.adobe.com/docs/commerce-cloud-service/user-guide/configure/env/variable-levels.html?lang=en

https://devdocs.magento.com/guides/v2.3/config-guide/prod/config-reference-var-name.html

You'll need to set

env:CONFIG__SYSTEM__WEB__GRAPHQL__CORS_ALLOWED_ORIGINS

as well as other relevant configuration in the UI.

damienwebdev commented 1 year ago

Additionally, I would recommend giving 2.0 a try as well, it's ~10x faster than the 1.x line.

rahulblue commented 1 year ago

env:CONFIGSYSTEMWEBGRAPHQLCORS_ALLOWED_ORIGINS

I have tried using this method but again having a same problem 3795a25e-9fa7-4daf-870a-0a2612c20013 . b359b61d-6a3c-40c3-8636-499f1ea9e3c4

damienwebdev commented 1 year ago

Please re-read the documents I sent.

rahulblue commented 1 year ago

Exactly which point are you referring to the problem is in there is no .magento.env.yaml file in the setup, only way I have that creating environment variable from Cloud UI, but it is not working. I am researching this topic since from last 9 hour still do not have exact solution.

damienwebdev commented 1 year ago

https://devdocs.magento.com/guides/v2.3/config-guide/prod/config-reference-var-name.html#variable-names

Additionally, take a look at your screenshot and try to align:

  1. What you wrote in the variable name
  2. What you pasted into the variable value
  3. What I wrote in the docs for the variables of this repo

It looks like you literally copy-pasted some access control headers into the field, which I don't mention anywhere in my docs.

rahulblue commented 1 year ago

Thanks for your reply,

Can you see below screenshot? Am I missing or doing wrongly?

please suggest.

a9c831ba-e1ee-4ede-ac49-06c6e88695ca f2e7d76b-4275-459d-a530-5f8f1a0136d3

damienwebdev commented 1 year ago

@rahulblue looks much better, however there's an error in your key name DEFAUT vs. DEFAULT

rahulblue commented 1 year ago

No luck after updating.

same error 334f03d3-3adb-4bd4-8515-14413dad6d28 7100c28a-602f-4fdc-b5c4-cd29b539499e

damienwebdev commented 1 year ago

Ok, let me try this out and I'll post my findings.

rahulblue commented 1 year ago

please let me know your findings, I have only one hope which is your extension. for Magento cloud integration branch there is no other way to enable CORS settings, it would be enable on further environment(Staging and Production) due to fastly. currently it is a biggest bottleneck for moving ahead to me.

Thanks.

leandrofreireasco commented 1 year ago

@damienwebdev any update on this one? Having the same issue here

damienwebdev commented 1 year ago

I don't have a cloud account that I have permissions to deploy this to. If you have one, I'd be more than happy to help.

On Wed, Apr 5, 2023, 11:31 AM leandrofreireasco @.***> wrote:

@damienwebdev https://github.com/damienwebdev any update on this one? Having the same issue here

— Reply to this email directly, view it on GitHub https://github.com/graycoreio/magento2-cors/issues/78#issuecomment-1497688986, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACE4QFXCN3Y5DLKYYL73GPTW7WF6XANCNFSM6AAAAAAT2MHDUM . You are receiving this because you were mentioned.Message ID: @.***>

leandrofreireasco commented 1 year ago

@damienwebdev I'm working on a cloud project right now. Our stack is Angular (Frontend) and Magento Cloud. We are getting issues with CORS while trying to fetch data from a graphql endpoint. I've installed your module and tried to configure it:

None of the steps above works

Any other clue on what we could do?

damienwebdev commented 1 year ago

Can you include the output headers on an OPTIONS request with curl targeted at your domain?

curl https://DOMAIN.com/graphql \
   -X OPTIONS \
   -H "Access-Control-Request-Method: POST" \
   -H "Access-Control-Request-Headers: content-type" \
   -H "Origin: https://DOMAIN.com" \
   --head

Please change the domain above and post the response you get back.

Additionally, please post the content you used for your ENV settings.

Finally, if you have a local env, can you confirm if it works locally in your environment. It may well be that Fastly messes with requests in cloud.

leandrofreireasco commented 1 year ago

@damienwebdev just to let you know, I figured it out.

In order for this module to work with Magento Cloud, we need to add the following entries to the app/etc/config.php file:

 'system' => [
        'default' => [
            'web' => [
                'graphql' => [
                    'cors_allowed_origins' => '*',
                    'cors_allowed_methods' => 'GET, POST, OPTIONS, PUT',
                    'cors_allowed_headers' => 'Content-Type, GraphQLAuth', // All headers used in the request
                    'cors_max_age' => '86400',
                    'cors_allow_credentials' => 0
                ],
                'api_rest' => [
                    'cors_allowed_origins' => '*',
                    'cors_allowed_methods' => 'GET, POST, OPTIONS',
                    'cors_allowed_headers' => 'Content-Type, GraphQLAuth' // All headers used in the request,
                    'cors_max_age' => '86400',
                    'cors_allow_credentials' => 0
                ]
            ]
        ]
    ]
damienwebdev commented 1 year ago

What wound up being the problem, the allowed headers?

leandrofreireasco commented 1 year ago

yep, those 3 headers must exist:

damienwebdev commented 1 year ago

@leandrofreireasco ok. Then, for the origins, I assume you added those as ENV variables to the cloud UI? Could you add a screenshot of what you added? (Feel free to obfuscate this, I just need a screenshot for the documentation)

damienwebdev commented 1 year ago

pinging @leandrofreireasco just one more time in hopes of a screenshot :)

amcguireweb commented 1 year ago

Funny you mention "for the documentation", I literally see no documentation to use this with Cloud. Trying to piece together a couple random issues with no solutions isn't working. Uninstalled as fast as I installed it.

damienwebdev commented 1 year ago

Sorry @amcguireweb I don't have any merchants that use this on Commerce Cloud. If you're willing to hop in discord, I'd be happy to turn whatever comes out of that into docs, it's just hard to write docs for something I don't do!

leandrofreireasco commented 1 year ago

Here we go @damienwebdev

app/etc/config.php

image

.magento.app.yaml

image