This question already has answers here:
hapi.js Cors Pre-flight not returning Access-Control-Allow-Origin header
                                
                                    (2个答案)
                                
                        
                                在11个月前关闭。
            
                    
我使用NodeJs + HapiJs V17开发了REST WebServices,并与Angular 6集成,当我开始执行POST / PUT请求时,CORS遇到了麻烦
我在本地主机和端口4000中部署了HapiJS应用程序,并使用Angular Cli运行了Angular 6代码。

当我从Chrome浏览器执行此操作时,出现以下错误:

CORS策略已阻止从源“ http://localhost:4000/api/v1/authenticateUser”对“ http://localhost:4200”处的XMLHttpRequest的访问:对预检请求的响应未通过访问控制检查:邮件头上不存在“ Access-Control-Allow-Origin”标头要求的资源。

我在Hapi Server的标头部分尝试了各种选项

Hapi服务器代码

const server = new Hapi.Server({
  port: 4000, routes: {
    cors: {
      origin: ['*'],
      headers: ["Accept", "Authorization", "Content-Type", "If-None-Match", "Accept-language"]
    }
  }
});


角度6

public login(payload: TokenPayload): Observable<ServiceResponse> {
        return this.http.post<ServiceResponse>(`${environment.apiUrl}/authenticateUser`, payload)
            .pipe(map(response => {
                if (response.data) this.saveUser(response.data);
                return response;
            }));
    }


我搜索了很多帖子,尝试了很多事情,但是没有运气。
如果有人遇到此问题并解决了该问题,请向我发布解决方案。
这阻止了我的产品发布。

这不是以下链接的重复帖子:
hapi.js Cors Pre-flight not returning Access-Control-Allow-Origin header

在上面的链接中,这是Hapi V16的问题。
但是我在HapiJS V17中面临这个问题。



我找到了解决方案:

使用hapi-cors插件,请参见以下示例代码。

await server.register({
 plugin: require('hapi-cors'),
 options: {
   origins: ['*'],
   allowCredentials: 'true',
   exposeHeaders: ['content-type', 'content-length'],
   maxAge: 600,
   methods: ['GET, HEAD, PUT, PATCH, POST, DELETE, OPTIONS'],
   headers: ['Accept', 'Content-Type', 'Authorization'] // add your header params
 },
 checkOrigin: true
});

await server.start();`

最佳答案

您是否尝试过credentials标志?

cors: {
    origin: ['my-origin-domain'],
    credentials: true,
    additionalHeaders: ['cache-control', 'x-requested-with', 'x-csrf-token', 'set-cookie', ...]
},

关于javascript - Hapi.js v17 CORS飞行前未返回Access-Control-Allow-Origin header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55477532/

10-11 22:20