Javascript 为什么可以';我不能提出这个axios删除请求吗?
React/Firebase项目。正在尝试删除文档 错误消息:访问位于。。。源于http://localhost:3000'已被CORS策略阻止:飞行前响应中的访问控制允许方法不允许方法删除 我添加了Access Control Allow方法和Access Control Allow Origin标头来尝试修复它,但没有效果Javascript 为什么可以';我不能提出这个axios删除请求吗?,javascript,reactjs,firebase,axios,cors,Javascript,Reactjs,Firebase,Axios,Cors,React/Firebase项目。正在尝试删除文档 错误消息:访问位于。。。源于http://localhost:3000'已被CORS策略阻止:飞行前响应中的访问控制允许方法不允许方法删除 我添加了Access Control Allow方法和Access Control Allow Origin标头来尝试修复它,但没有效果 firebase .auth() .currentUser.getIdToken(true) .then((token) =&
firebase
.auth()
.currentUser.getIdToken(true)
.then((token) => {
console.log(token)
return axios.delete(
`${FunctionsDir}/deleteMessage`,
{
messageID: messageID,
},
{
headers: {
Authorization: `Bearer ${token}`,
'content-type': 'application/octet-stream',
'Access-Control-Allow-Methods': 'DELETE',
'Access-Control-Allow-Origin': 'http://localhost:3000',
},
}
)
})
查看CORS以了解详细信息,但这基本上意味着不允许请求源(即localhost)向请求目标(即
${FunctionsDir}/deleteMessage
)发出请求。您的COR头没有帮助,因为目标而不是源决定了接受来自谁的请求。也就是说,银行必须批准你的贷款,而不是相反
未来的方法是放松服务器上的CORS策略(只要${FunctionsDir}/deleteMessage
指向)
值得指出的是,CORS是浏览器强制执行的。因此,如果您无法控制服务器,那么CORS可以通过不使用浏览器来解决。例如,您可以使用节点或电子应用程序而不是浏览器网页
最后,如果您无法控制服务器,但必须通过浏览器进行部署,则可以创建代理服务器。您的网页将向代理服务器发送请求,代理服务器将请求转发到
${FunctionsDir}/deleteMessage
目标。由于代理服务器不基于浏览器,因此不需要遵守CORS。查看CORS了解详细信息,但这基本上意味着不允许请求源(即本地主机)向请求目标发出请求(即${FunctionsDir}/deleteMessage
)。您的COR头没有帮助,因为目标而不是源决定了接受来自谁的请求。也就是说,银行必须批准您的贷款,而不是相反。在本例中,服务器firebase是您需要配置CORS策略的地方