-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(cors): consider using allow_origins_by_regex
only when it is not nil
#9028
Conversation
…rigins_by_regex only
…rigins_by_regex only
apisix/plugins/cors.lua
Outdated
if not match_origins(req_origin, allow_origins) then | ||
allow_origins = process_with_allow_origins_by_regex(conf, ctx, req_origin) | ||
allow_origins = process_with_allow_origins_by_regex(conf, ctx, req_origin) | ||
if not match_origins(req_origin, allow_origins) and conf.allow_origins_by_regex == nil then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With cors plugin's default config, when a request doesn't have a origin header, the match_origins method will return true, then the following process_with_allow_origins method won't be executed.
t/plugin/cors.t
Outdated
|
||
|
||
|
||
=== TEST 36: set route ( regex specified and allow_origins is default value ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add new tests to the other test file.
When the test file is too large, for example > 800 lines, you should split it to a new file. Please take a look at t/plugin/limit-conn.t and t/plugin/limit-conn2.t.
apisix/plugins/cors.lua
Outdated
@@ -297,13 +297,13 @@ end | |||
|
|||
function _M.header_filter(conf, ctx) | |||
local req_origin = ctx.original_request_origin | |||
-- Try allow_origins first, if mismatched, try allow_origins_by_regex. | |||
-- If allow_origins_by_regex is not nil, should be considered to allow_origins_by_regex only |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's update docs for the new try order.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's update docs for the new try order.
Thank you for reminding. I have modified it.
Is this PR ready to merge? @spacewander |
apisix/plugins/cors.lua
Outdated
allow_origins = process_with_allow_origins(conf.allow_origins, ctx, req_origin) | ||
if not match_origins(req_origin, allow_origins) then | ||
allow_origins = process_with_allow_origins_by_regex(conf, ctx, req_origin) | ||
allow_origins = process_with_allow_origins_by_regex(conf, ctx, req_origin) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Look like we can skip this function call by checking the conf.allow_origins_by_regex == nil
first. For example,
if conf.allow_origins_by_regex ~= nil then
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. We can move it out, and avoid the repeated and conf.allow_origins_by_regex == nil
check below.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks and I has changed it.
Let's merge master to make CI pass. |
https://github.com/apache/apisix/actions/runs/4446285829/jobs/7839374950?pr=9028
Please make the CI pass, thanks! |
update TEST 5
@spacewander I have just updated it. Thanks |
Merging needs another approving of reviewer with write access. @spacewander |
allow_origins_by_regex
only when it is not nil
Hi, @Qiuqiu0505 |
@KID-G Hi, my email address is [email protected]. |
* upstream/master: (25 commits) fix: upgrade lua-resty-ldap to 0.2.2 (apache#9254) feat(cli): support bypassing Admin API Auth by configuration (apache#9147) fix(ci): write version into xds first (apache#9274) fix: skip warning log when apisix.data_encryption.enable is false (apache#9057) docs: add-api7-information (apache#9260) docs: Fixed typo (apache#9244) docs: clarify what is client.ca in client-to-apisix-mtls.md (apache#9221) docs: Corrected typos and grammatical errors (apache#9216) docs: updated ssl sni parameter requirement in admin-api.md (apache#9176) fix: check upstream reference in traffic-split plugin when delete upstream (apache#9044) docs: Update proxy-rewrite headers.add docs (apache#9220) feat: suppot header injection for fault-injection plugin (apache#9039) fix: upgrade lua-resty-etcd to 1.10.4 (apache#9235) docs: fix incorrect semantic.yml link (apache#9231) feat: Upstream status report (apache#9151) fix: host_hdr should not be false (apache#9150) docs: remove APISIX base instruction (apache#9117) fix(cli): prevent non-`127.0.0.0/24` to access admin api with empty admin_key (apache#9146) docs: fix 404 link (apache#9160) fix(cors): consider using `allow_origins_by_regex` only when it is not `nil` (apache#9028) ...
Description
Fixes #9027
-- If allow_origins_by_regex is not nil, should be considered to allow_origins_by_regex only.
Checklist