前端跨域问题的解决思路

目录

前言

跨域问题的解决思路

一般跨域的解决方案


++++前言++++

做了一个简单页面,做了一些数据埋点,想通过企业微信机器人来推送数据,遇到了一些问题,顺便记录下。

++++跨域问题的解决思路++++

由于是项目比较简单,直接使用了ajax去请求,代码如下

java 复制代码
$.ajax({
  type: 'POST',
  url: 'XXXXX',
  async: true,
  data: $.toJSON(data),
  contentType:'application/json;charset=utf-8',
  dataType: 'json',
  success: function (data) {
    console.log("data",data)
  },
  error: function (error) {
    console.log("error",error);
  }
})

请求的时候发现了跨域问题

java 复制代码
Access to XMLHttpRequest at 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b38aa4d8-a08e-4a91-' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这里为什么会跨域呢?因为我在我自己域名上去请求其他域名。

++++一般跨域的解决方案++++

  • jsonp(微信机器人接口只支持json)
  • 后端设置跨域 (我也改不了企业微信后台的接口啊)

那有什么方案呢?思路决定出路啊,朋友们

先明白问题所在,是因为浏览器同源政策导致跨域的问题,那我请求的域名是同源的不就好了吗?

下面说下具体方法

  • 使用nginx进行转发

我只需要把ajax请求的url更换成自己的域名,然后使用nginx转发到企业微信接口,就完美绕开了跨域问题

java 复制代码
$.ajax({
  type: 'POST',
  url: 'https://domain/test',
  async: true,
  data: $.toJSON(data),
  contentType:'application/json;charset=utf-8',
  dataType: 'json',
  success: function (data) {
    console.log("data",data)
  },
  error: function (error) {
    console.log("error",error);
  }
})
  • nginx配置
java 复制代码
 location /test/ {
        proxy_pass https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b38aa4d8-a08e-4a91;
        proxy_method POST;
}
  • 这样就解决了跨域的问题,通过服务器转发来实现

但是问题又来了,nginx转发请求从POST变成GET

可以看到上面的配置是post请求到nginx,nginx在把请求转发到企业微信接口

第一次http请求是post,第二次居然自动转换成get。

原来nginx在配置location的时候,如果多了/,那么会自动变成get

修改后如下

java 复制代码
 location /test {

        proxy_pass https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b38aa4d8-a08e-4a91;

        proxy_method POST;

}

解决了解决了。

相关推荐
咬人喵喵40 分钟前
E2.COOL 平台深度解析:从特效分类到实战操作指南
前端·编辑器·svg
RisunJan1 小时前
Linux命令-named-checkzone
linux·前端
小陈工1 小时前
Python Web开发入门(十):数据库迁移与版本管理——让数据库变更可控可回滚
前端·数据库·人工智能·python·sql·云原生·架构
吹晚风吧2 小时前
解决vite打包,base配置前缀,nginx的dist包找不到资源
服务器·前端·nginx
weixin199701080162 小时前
《施耐德商品详情页前端性能优化实战》
前端·性能优化
不想上班只想要钱2 小时前
模板里 item.xxx 报错 ,报 item的类型为未知
前端·vue
阿琳a_3 小时前
在github上部署个人的vitepress文档网站
前端·vue.js·github·网站搭建·cesium
酉鬼女又兒3 小时前
零基础快速入门前端ES6 核心特性详解与蓝桥杯 Web 考点实践(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·职场和发展·蓝桥杯·es6·css3·html5
Zk.Sun3 小时前
【RK3588 Mali610 适配 Qt6 】
前端·javascript·vue.js
不想吃菠萝3 小时前
vue3+ts 使用postcss-pxtorem依赖进行rem适配
前端·javascript·vue.js·postcss