使用 Nginx 作为负载均衡器时的 Hapi CORS
Hapi CORS while using Nginx as load balancer
我有一个在 enable-cors.org 上看到的具有广泛开放内核的 Nginx。我可以在 GET
请求
中看到以下内容
Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: Authorization,If-Modified-Since,Cache-Control,Content-Type,Accept
Access-Control-Expose-Headers: Content-Length,Content-Range
然而,当我从 chrome 尝试使用 POST
值时,我收到了这样的错误;
Access to XMLHttpRequest at 'http://0.0.0.0/user' from origin
'http://localhost:3000' has been blocked by CORS policy: No
'Access-Control-Allow-Origin' header is present on the requested
resource.
我正在尝试从我的 POST
请求
的响应中获取 header 授权
这是我修复它的方法。
在 Hapi 服务器块中启用 CORS
const server = Hapi.Server({
debug: { request: ["error"] },
port: process.env.APP_PORT,
host: process.env.APP_SERVER,
routes: {
cors: true
}
});
在Nginx
中创建反向代理
proxy_pass http://localhost:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-User $remote_user;
proxy_set_header X-Real-IP $remote_addr;
观看header
您将看到一条错误消息,指出 multiple value for header Access-Control-Allow-Origin.
通过使用 nginx
config
隐藏 Hapi 来抑制 Access-Control-Allow-Origin
proxy_hide_header Access-Control-Allow-Origin;
编辑
设法在没有 nginx
的情况下使用 Hapi 服务器块中的以下值
cors: {
origin: "ignore",
additionalHeaders: ["Authorization"],
additionalExposedHeaders: ["Authorization"]
},
我有一个在 enable-cors.org 上看到的具有广泛开放内核的 Nginx。我可以在 GET
请求
Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: Authorization,If-Modified-Since,Cache-Control,Content-Type,Accept
Access-Control-Expose-Headers: Content-Length,Content-Range
然而,当我从 chrome 尝试使用 POST
值时,我收到了这样的错误;
Access to XMLHttpRequest at 'http://0.0.0.0/user' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我正在尝试从我的 POST
请求
这是我修复它的方法。
在 Hapi 服务器块中启用 CORS
const server = Hapi.Server({ debug: { request: ["error"] }, port: process.env.APP_PORT, host: process.env.APP_SERVER, routes: { cors: true } });
在
中创建反向代理Nginx
proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-User $remote_user; proxy_set_header X-Real-IP $remote_addr;
观看header
您将看到一条错误消息,指出 multiple value for header Access-Control-Allow-Origin.通过使用
隐藏 Hapi 来抑制nginx
configAccess-Control-Allow-Origin
proxy_hide_header Access-Control-Allow-Origin;
编辑
设法在没有 nginx
的情况下使用 Hapi 服务器块中的以下值
cors: {
origin: "ignore",
additionalHeaders: ["Authorization"],
additionalExposedHeaders: ["Authorization"]
},