Microsoft GraphQL
[我正在从http://localhost:8080在本地运行Vue应用程序,但不断出现CORS错误,我添加了Access-Control-Allow-Origin标头,但受到打击,但始终收到以下警告:
'源自源'http://localhost:8080',已被CORS策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在'Access-Control-Allow-Origin'标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。
const graphCall = () => {
let tokenOptions = {
method: 'POST',
uri: '/**key**/oauth2/v2.0/token',
headers: {
'Access-Control-Allow-Origin': 'http://localhost:8080',
'contentType': 'application/x-www-form-urlencoded'
},
form: {
grant_type: VUE_APP_GRANT_TYPE,
client_secret: VUE_APP_CLIENT_SECRET,
scope: VUE_APP_SCOPE,
client_id: VUE_APP_CLIENT_ID
}
};
return rp(tokenOptions)
.then(data => {
console.log(data)
}).catch((err) => {
console.log(err);
});
};
我尝试添加模式:'no-cors',但仅获得以下内容-错误:opts.mode的值无效
我也尝试过将'*'作为访问控制源,但无济于事。
我们是否需要解决此CORS噩梦,因此我们需要进行此调用以检索密钥!所有这些都是新手,所以如果我描述的不尽如人意,请告诉我!
回答如下:服务器必须允许您的来源,在这种情况下为http://localhost:8080。通常,在与提供者进行交互的场景中,在创建令牌的管理门户中,您还必须指定要从中调用它的域。
Access-Control-Allow-Origin
通常是服务器在响应中提供的标头,并不意味着应在请求上发送它。
以下链接帮助我更好地了解了CORS。https://developer.mozilla/en-US/docs/Web/HTTP/CORS
请注意,允许*
的来源对于开发是很好的,但对于生产应用程序则不建议这样做。