前端跨域问题的解决思路

目录

前言

跨域问题的解决思路

一般跨域的解决方案


前言

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

跨域问题的解决思路

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

$.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);}
})

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

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转发到企业微信接口,就完美绕开了跨域问题

$.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配置
 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

修改后如下

 location /test {proxy_pass https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b38aa4d8-a08e-4a91;proxy_method POST;}

解决了解决了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Effective C++》《Resource Management》

文章目录 13、term13:Use objects to manage resources14、term14:Think carefully about copying behavior in resource-managing classes15、term15:Provide access to raw resources in resource-managing classes法一: 使用智能指针的get进行显示转换法二&#…

Redis 连接 命令

目录 1.Redis Echo 命令 - 打印字符串简介语法可用版本: > 1.0.0返回值: 返回字符串本身。 示例 2.Redis Select 命令 - 切换到指定的数据库简介语法可用版本: > 1.0.0返回值: 总是返回 OK 。 示例 3.Redis Ping 命令 - 查看服务是否运行简介语法可用版本: > 1.0.0返回…

Apache 网页优化

目录 1.网页压缩与缓存 1.1 网页压缩 1. gzip 介绍 2. Http的压缩过程 3. Apache的压缩模块 4. mod_deflate模块 1.2 网页缓存 1. 配置 mod_expires 模块启用 2. 隐藏版本信息 2.1 配置Apache隐藏版本信息 2.2 Apache 防盗链 1. 配置防盗链 2.检查是否安装mod_re…

景联文科技GPT教育题库:AI教育大模型的强大数据引擎

GPT-4发布后,美国奥数队总教练、卡耐基梅隆大学数学系教授罗博认为,这个几乎是用“刷题”方式喂大的AI教育大模型的到来,意味着人类的刷题时代即将退出历史舞台。 未来教育将更加注重学生的个性化需求和多元化发展,借助GPT和AI教育…

你想过在 C++ 中使用契约和反射特性吗?

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/fOEG22dQqKSpsZmk8z6w6g ISO/IEC C 技术委员会主持人 Herb Sutter 报告称,C26 将具有新的功能,包括契约和反射。 该委员会…

Java异常简单介绍

文章目录 1. 异常分类和关键字1.1 分类1.2 关键字 2. Error2.1 Error定义2.2 常见的Error2.2.1 VirtualMachineError2.2.2 ThreadDeath2.2.3 LinkageError2.2.4 AssertionError2.2.5 InternalError2.2.6 OutOfMemoryError2.2.6.1 OOM原因2.2.6.2 OutOfMemoryError会导致宕机吗 …

大创项目推荐 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…

Leetcode算法系列| 11. 盛最多水的容器

目录 1.题目2.题解C# 解法一:暴力C# 解法二:双指针(左指针大于右指针,left)C# 解法三:双指针优化(左指针小于等于最小高度,left)Java 解法一:双指针Python3 解…

经常使用耳机对耳朵听力有影响吗?戴哪种耳机不伤耳朵听力?

经常使用耳机容易引起末梢感受器官受损,可能造成内耳功能损伤,出现耳聋、耳鸣等听力的适应性下降的症状,建议使用耳机时间不要过长,并且音量不要过大。如果想保护听力的话,建议选择骨传导耳机,骨传导耳机通…

单片机快速入门

参考连接: 安装MinGW-64(在win10上搭建C/C开发环境)https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接:https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码:y1mz --来自百度网盘超级会员V7的分享C…

rotate-captcha-crack项目重新训练百度旋转验证码角度预测模型

参考: building-powerful-image-classification-models-using-very-little-data.html https://github.com/Starry-OvO/rotate-captcha-crack (主)作者思路:https://www.52pojie.cn/thread-1754224-1-1.html 纠正 新版百度、百家…

低成本总线技术——LIN总线协议规范介绍

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。 本篇文章主要介绍LIN总线协议规范。 数据帧的结构 LIN的数据帧包括报头,响应两大部分。而报头…

Visual Studio 2013 “即将退休”

新年快乐! 这也是向各位开发者提醒 Visual Studio 支持生命周期中即将到来的好时机。 对 Visual Studio 2013 的支持即将在今年(2024年)的4月9日结束。如果你正在使用旧版本的 Visual Studio,我们强烈建议您升级您的开发环境到最新的 Visual Studio 20…

浏览器是如何渲染页面的

浏览器是个极其复杂的程序,这里只是挑几个和前端息息相关的重要内容来说 在学习如何渲染之前需要知道一个浏览器浏览器会有多个进程,其中主要进程有浏览器进程,网络进程,渲染进程这里我们主要学习内容就发生在渲染进程。当渲染进程…

【解决openGauss无法使用gs_check等服务器端命令问题】

【解决openGauss无法使用gs_check等服务器端命令问题】 一、问题描述二、问题原因三、解决方法 一、问题描述 [ommopengauss03 ~]$ gs_check -i CheckCPU Parsing the check items config file successfully [GAUSS-53026]: ERROR: Execute SSH command on host 192.168.56.19…

给出一句话来描述想要的图片,就能从图库中搜出来符合要求的

介绍 地址:https://github.com/mazzzystar/Queryable The open-source code of Queryable, an iOS app, leverages the OpenAIs CLIP model to conduct offline searches in the Photos album. Unlike the category-based search model built into the iOS Photos…

项目使用PowerJob

新一代的定时任务框架——PowerJob 简介 PowerJob是基于java开发的企业级的分布式任务调度平台,与xxl-job一样,基于web页面实现任务调度配置与记录,使用简单,上手快速,其主要功能特性如下: 使用简单&…

如何在 Windows 上从电脑硬盘恢复照片

如今,随着相机设备的普及,您可以轻松地一次拍摄一堆照片,将它们传输到硬盘上,然后再拍摄更多照片。但是,如果您的所有照片意外丢失在驱动器中怎么办?你能恢复它们吗? 在本指南中,我…

EasyRecovery2024永久免费版电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、…

postgresql可视化导入csv文件

不需要在命令行copy了,只需简单点几下 1.在数据库下建一个schema 右击选中数据库-new schema 2.双击你创建的schema,出现tables 3.右击tables,选择import wizard 4.选择你想导入的文件格式,之后一直next 5.选择你的文件所在位置…