表达 CORS 子域

6 javascript node.js cors express

我有一个站点 \xe2\x80\x94 https://example.com\xe2\x80\x94,它调用 API \xe2\x80\x94 https://api.example.com\xe2\x80\x94。该 API 是用 Express 编写的,它使用CORS 包来允许来自站点的请求:

\n\n
app.use(\n    cors({\n        credentials: true,\n        origin: "https://example.com",\n    })\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

该网站可以通过https://example.com或 通过 访问https://www.example.com。如您所见,在 API 中,我明确允许来自前一个地址的请求,但不允许来自后一个地址的请求。因此,如果任何人通过后一个地址访问它,则对 API 的请求将被拒绝。

\n\n

解决这个问题的通常方法是什么?明确允许https://example.comhttps://www.example.com? 或者也许有一种方法可以忽略子域www

\n\n

提前致谢!

\n\n

--

\n\n

编辑:

\n\n

按照建议,我https://www.example.com明确添加到了 cors 配置中

\n\n
app.use(\n    cors({\n        credentials: true,\n        origin: ["https://example.com", "https://www.example.com"],\n    })\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这没有用。.htaccess作为解决方法,我刚刚所做的是将文件 \xe2\x80\x94Apache server\xe2\x80\x94中的重写条件从www域重定向到非www域。

\n\n

但现在的问题是:为什么即使允许也www.example.com不起作用?这有什么共同的原因吗?

\n

Que*_*tin 2

通常的方法是避免两个不同来源的网站具有相同的内容。

配置www.example.com以发出 HTTP 301 重定向到example.com.


明确允许https://example.comhttps://www.example.com?

那也行。origin可以传递一个数组。

或者也许有办法忽略子域 www?

origin也可以传递正则表达式。