我有一个Digital Ocean负载均衡器。负载均衡器后面是两个服务器。两台服务器都使用nginx反向代理,该代理将流量转发到节点脚本。
一切正常,但是我注意到有些奇怪。
比方说POST已发送。负载平衡器将POST发送到server1。 Server1确认(POST)并回复。但是server2会确认(选项)。
我不明白server2怎么知道对server1的POST请求。
每次server1回复POST请求时,server2为什么都会用OPTIONS进行回复?
服务器2当然不应该知道服务器1在做什么吗?
感谢您的答复。
答案 0 :(得分:2)
负载均衡器似乎正在工作。它正在拆分请求,因为POST和OPTIONS是两个单独的请求。由于浏览器的安全性和CORS,发送了OPTIONS请求。不要将OPTIONS + POST请求视为同一请求。它们是分开的,服务器需要响应它们中的每一个,因此server2不知道POST请求,而只知道OPTIONS,因此负载均衡器可以正确地执行其工作。
答案 1 :(得分:1)
这就是CORS预检请求的工作方式,请查看您的浏览器,您应该看到两个请求,一个OPTIONS和一个POST。
第一个OPTIONS请求在此处检查是否允许您的客户端访问您的API,第二个POST是您的API调用。