2

我的 Pact 模拟服务器正在侦听与我的测试不同的端口,并且我的 Pact 模拟服务器正在使用以下配置运行:

const provider = pact({
consumer: 'myconsumer',
provider: 'myprovider',
port: 8989,
cors: true,
log: path.resolve(process.cwd(), 'logs', 'pact.log'),
dir: path.resolve(process.cwd(), 'pacts'),
logLevel: 'DEBUG',
spec: 1
});

我使用“axios”请求上述模拟服务器,并且该请求与我在提供程序上配置的交互之一匹配(根据 pact.log)。但是响应总是会引发 CORS 错误。

我的协议日志包含以下信息:已 收到模拟服务管理端点 POST /interactions 的 OPTIONS 请求。返回 CORS 标头:{"Access-Control-Allow-Origin":"null","Access-Control-Allow-Headers":"x-pact-mock-service","Access-Control-Allow-Methods":"删除、发布、获取、头部、放置、跟踪、连接、补丁"}。

为什么 Access-Control-Allow-Origin 是 null 而不是 '*'。?

当我使用基于 webpack、npm 和 mocha 的测试时,如何使用测试作为最终手段完全禁用 CORS 安全性。?

4

1 回答 1

2

该 CORS 标志有点误导。如果您的应用程序使用 CORS,那么您仍然需要告诉 Pact 它应该OPTIONS根据 cors 标准期待请求。这是合同的一部分,你不能只期望你的服务器能正常工作,所以它应该是你测试的一部分。

有关背景,请参阅https://github.com/pact-foundation/pact-js/issues/58

于 2017-07-17T08:37:15.607 回答