我需要在用户和服务器之间发送cookie(node.js),要使用来自浏览器的http请求,我需要将标头 Access-Control-Allow-Origin 设置为值'*' (允许所有),并且要使用Cookie,我需要使用查询参数: withCredentials:true 从用户发送请求,并发送标头为 Access-Control-Allow-Credentials < / strong>设为 true ,但要使用此标头,我需要在标头 Access-Control-Allow-Origin 中设置确切的协议+域+端口 。购买,如果此应用程序面向所有人,我将如何使用确切的域和端口。
正常工作我需要做什么?
答案 0 :(得分:2)
首先,CORS规范明确决定限制服务器的组合,以允许同一请求中的所有来源和凭证。如果以这种方式配置服务器,则会使客户面临潜在的CSRF攻击,这意味着恶意网站可能会使用客户的/用户的Cookie来攻击您的API并窃取其数据。情况不好。问自己,为什么需要Cookie才能完成请求,以及是否没有更好的解决方案,例如通过特定的前端路由所有请求。
要进行配置,您可以使用npm软件包cors,并根据docs设置corsOptions = { origin: true }
。这将使用请求的“ Origin”标头作为响应中允许的Origin。
同样,这是一个糟糕的主意,但是如果您可以证明它是正确的,并且知道您为什么这样做,那么它就是您的API。
答案 1 :(得分:2)
您可以读取Origin
请求标头(浏览器会自动添加),并将其值作为Access-Control-Allow-Origin
的值回显。
您需要非常小心,以确保您使用的cookie不会使恶意的第三方网站在您的用户访问时给您或您的用户造成问题他们的网站(CORS有权使用凭据访问您的网站)。