fix(cors): consider using allow_origins_by_regex only when it is not nil#9028
Conversation
…rigins_by_regex only
…rigins_by_regex only
| 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.
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.
|
|
||
|
|
||
|
|
||
| === TEST 36: set route ( regex specified and allow_origins is default value ) |
There was a problem hiding this comment.
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.
| 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.
Let's update docs for the new try order.
There was a problem hiding this comment.
Let's update docs for the new try order.
Thank you for reminding. I have modified it.
|
Is this PR ready to merge? @spacewander |
| 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.
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.
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.
Thanks and I has changed it.
|
Let's merge master to make CI pass. |
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