当前位置: 首页 > 知识库问答 >
问题:

CORS仅在post请求时阻止[副本]

叶炜
2023-03-14

当我向我的api发出请求时,chrome会阻止我的请求,原因是内核。在我的firebase云函数上,我添加了response.set('access-control-allow-origin','*');(axios get中的xxxxxx只是隐藏请求url)

export const getApproximateAddress = functions.https.onRequest(async(request, response)=>{
 try{
     response.set('Access-Control-Allow-Origin','*');
     response.set('Access-Control-Allow-Methods','GET, POST, PATCH, PUT, DELETE, OPTIONS');
     let data = JSON.parse(request.body);
     let lat = "";
     let lng = "";
     let hasCoords = false;
     if( data.lat !== undefined && data.lng !== undefined){
         lat = data.lat;
         lng = data.lng;
         hasCoords = true;
     }
     let place = data.place;
     let result;
     if(hasCoords){
         result = await axios.get(`xxxxxxxx`);
         console.log("hehe");
     }else{
         result = await axios.get(`xxxxxxxx`);
     }
     if(result.status !== 200){
        response.status(result.status).send(result.data);
     }else{
        console.log(result.data.features);
        response.status(200).send(result.data.features);
     }
  }catch(error){
     response.status(500).send(error);
 }

然后在我的angular应用程序中,我发出一个http post请求,如下所示

searchLoation(query:any):Observable<any>{
  const url = 'https:XXXXXXXX/getApproximateAddress';
  return this.http.post(url,{place:query},{
    observe: 'body'
  });
}

url与请求来自的域不同。

当我测试《邮差》里的一切,一切都很好...

共有1个答案

南门峰
2023-03-14

您需要在服务器上允许CORS(在云功能API中)。可能是这样的,这取决于您的API内置的内容。CORS总是需要在服务器上设置,报头通常不会有影响。下面是一个Node.js解决方案作为示例。您将需要安装cors库

import * as cors from 'cors'

const app = express()

app.use(
  cors({
    origin: true,
  }),
)
 类似资料:
  • 下面是我的Ajax请求: 如果我没有精确的内容类型,我就无法再看到Firebug的请求。相反,当我添加内容类型时,我可以看到POST请求(由于我的URL是false而出现错误),但在我的头中,内容类型默认是URL编码的表单。 我想要的是通过JSON数据发送表单的详细信息。谢谢你的帮助

  • 我正在使用Spring MVC和角7创建一个CRUD应用程序。我在我的Spring应用程序中允许CORS,但是当我从角调用PUT请求时,我得到一个“从源'http://localhost:4200'在'http://localhost:8080/BookAPI/api/updateBook/70'处访问XMLHttpRequest已被CORS策略阻止:对预飞行请求的响应未通过权限改造检查:请求的资

  • 我想通过POST请求(使用ajax)发送一个到我的服务器,但是每次尝试都被CORS阻止了。阅读为什么它被封锁一点帮助都没有。在某个时候,这里的一个评论声称,不允许有contentType的POST请求(对不起,我找不到相关的帖子了)。所以我测试了一些东西。我写了以下文件: 我在端口上运行了它。使用contentType发送POST请求可以正常工作,但是get被CORS阻止。 相关javascrip

  • 问题内容: 我在端口5000的node.js服务器上设置了CORS,如下所示: 我现在正尝试像这样在从硬盘打开的静态网页中使用JQuery发送AJAX POST请求: 该函数从不调用,并且我得到的唯一警报是来自XHR 处理程序的警报,其中包含以下错误: 我认为CORS配置合理, 我缺少什么? 编辑 :对于我而言,我能找到的最佳解决方案是从服务器发送页面: 问题答案: 这是我正在使用的代码。它位于我

  • 我有一个Android、Ios和web应用程序,它使用php作为后端。所有Api在android和ios中都运行良好,但在web中抛出CORS错误。得到这样的错误 访问位于“”的XMLHttpRequesthttps://example.com/api“起源”http://localhost:49168'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origi