b2b2dot0 / magento-2-cors-requests
启用从配置的源域到 Magento 2 API 的跨域资源共享(CORS)请求
100.0.7
2022-05-19 15:09 UTC
Requires
- php: ~7.1.3||~7.2.0||~7.3.0||~7.4.0||~8.1.0
- magento/framework: *
This package is not auto-updated.
Last update: 2024-09-21 01:17:01 UTC
README
此模块允许您通过添加适当的 HTTP 头和处理预检 OPTIONS 请求来在 Magento 2 中启用跨源资源共享(CORS)REST API 请求。
这可以用于允许从另一个域名(或子域名)到 Magento 2 REST API 的 AJAX 和其他请求。
安装方法
1. 通过 composer
composer require b2b2dot0/magento-2-cors-requests
或
编辑 composer.json
{
"require": {
"splashlab/magento-2-cors-requests": "100.0.7"
}
}
composer install
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
2. 复制并粘贴
从 GitHub 下载最新版本
粘贴到 app/code/SplashLab/CorsRequests
目录
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
3. 更新源 URL
在 商店 -> 配置
中,转到 常规 -> 网络 -> CORS 请求配置
。
然后编辑 CORS 源 URL
字段,将其设置为要启用跨域请求的域名。(例如,http://example.com)
它是如何工作的?
本 README 不涉及 CORS 跨域 HTTP 请求的完整实现,但这是此模块所做的事情
- 允许在管理员配置区域配置源 URL - 这是允许跨域请求的域名
- 此域名被添加到
Access-Control-Allow-Origin
响应 HTTP 头 - 可选地,您还可以启用
Access-Control-Allow-Credentials
头,以允许传递cookies
对于非 GET 和非标准 POST 请求(例如 PUT 和 DELETE),预检“OPTIONS”请求由以下方式处理
- 一个空的
/V1/cors/check
API 响应,带有适当的头 Access-Control-Allow-Methods
响应头,它反映了Access-Control-Request-Method
请求头Access-Control-Allow-Headers
响应头,它反映了Access-Control-Request-Headers
请求头
替代方案
您也可以使用 Apache 和 Nginx 规则来管理这些 CORS 头,而不是使用此扩展
- https://community.magento.com/t5/Magento-2-Feature-Requests-and-API-CORS-requests-will-fail-without-OPTIONS-reponse/idi-p/60551
- https://stackoverflow.com/questions/35174585/how-to-add-cors-cross-origin-policy-to-all-domains-in-nginx
但我创建此扩展是为了允许您在管理员配置中配置源域,并避免需要创建和管理特殊的服务器配置。
CORS 跨域请求参考
- https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
- https://mdn.org.cn/en-US/docs/Web/HTTP/Access_control_CORS
- https://www.html5rocks.com/en/tutorials/cors/
- https://stackoverflow.com/questions/29954037/how-to-disable-options-request
- https://stackoverflow.com/questions/12320467/jquery-cors-content-type-options
- magento/magento2#8399