Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能提出这个axios删除请求吗?_Javascript_Reactjs_Firebase_Axios_Cors - Fatal编程技术网

Javascript 为什么可以';我不能提出这个axios删除请求吗?

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) =&

React/Firebase项目。正在尝试删除文档

错误消息:访问位于。。。源于http://localhost:3000'已被CORS策略阻止:飞行前响应中的访问控制允许方法不允许方法删除

我添加了Access Control Allow方法和Access Control Allow Origin标头来尝试修复它,但没有效果

    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策略的地方