CORS处理跨域问题

news2025/3/2 2:02:12

“前后端分离的项目必然会遇到一个典型的问题——跨域问题。”

跨域

       要解决跨域问题,首先得知道什么是跨域?

       首先,跨域是访问的域名或IP、端口三者有一不同都属于跨域。(注意请求路径不是),即使在本地测试,前后端分离使用的端口号也会不同。【不跨域的,我们称为同源,跨域问题本质上源于浏览器的同源策略】

127.0.0.1:8080127.0.0.1:8081跨域
www.baidu.com:80www.qq.com:80跨域
192.168.0.1:80/get192.168.0.1:80/index不是跨域

       另外,经查询,跨域问题仅针对浏览器,即浏览器才有跨域问题的发送。

        那么跨域问题会产生什么?即“跨不过去”了呗,前端请求不到后端,后端响应不回前端。虽然如此,这个浏览器即使有这个同源策略,但还是会尝试去请求,比如前端访问,浏览器还是会尝试去访问后端。

        解决方法:通常有NGINX和CORS等处理,因为本文是针对Django的,那么选CORS解决会较为简单一些。

CORS操作

        浏览器为了安全,所以阻挡了跨域(否则共享cookie就麻烦了)。但浏览器还是会试图发起请求。

     浏览器的尝试请求是可以测试得到的。用前后端分离的vue+django项目在Pycharm控制台还是响应出了200,这就说明浏览器把请求打过来,只是又拦截掉了而已)

           用开发者工具看到看到错误:

CORS police: No 'Access-Control-Allow-Origin' header is present on the requested resource.

       浏览器通过检测响应头有无 Access-Control-Allow-Origin(有这个头就可以)

        下面是Django项目的处理方案:
 

配置文件(添加):

这里假定本地的前端的访问为127.0.0.1:8080

INSTALLED_APPS = [    ...    'corsheaders',   # 解决跨域CORS    ...]MIDDLEWARE = [  'corsheaders.middleware.CorsMiddleware',    # 最外层的中间件(先解决跨域问题了再走下面的中间件,所以放最前面)    ...]# 允许哪些域名访问DjangoALLOWED_HOSTS = ['127.0.0.1', 'Localhost']# CORS追加白名单(显然针对的是前端域名)(后端可能自己识别不到自己吗?)CORS_ORIGIN_WHITELIST = (  '127.0.0.1:8080',  'localhost:8080',)CORS_ALLOW_CREDENTIALS =True # 允许携带cookie

运行可能会出错:

?: (corsheaders.E013) Origin '127.0.0.1:8080' in CORS_ORIGIN_WHITELIST is missing scheme or netlocHINT: Add a scheme (e.g. https://) or netloc (e.g. example.com).?: (corsheaders.E013) Origin 'localhost:8080' in CORS_ORIGIN_WHITELIST is missing scheme or netlocHINT: Add a scheme (e.g. https://) or netloc (e.g. example.com).

解决:(CORS_ORIGIN_WHITELIST前面配上http://即可,配置过HTTPS的,就切https://)

CORS_ORIGIN_WHITELIST = (  'http://127.0.0.1:8080',  'http://localhost:8080',)

允许跨域了,需要在返回的响应头中携带下面信息:

  • Access-Control-Allow-Origin:可接受的域,是一个具体域名或者*(代表任意)

  • Access-Control-Allow-Credentials:是否允许携带cookie,默认情况下,cors不会携带cookie,除非这个值是true

  • 这个OPTIONS就是那个尝试请求的标识

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

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

相关文章

【计算机网络】学习笔记--第一章

【计算机网络】学习笔记--第一章基本概念端系统之间的通信客户-服务器方式(C/S方式)对等连接方式:三种交换方式电路交换(Circuit Switching)分组交换(Packet Switching)报文交换(Mes…

centos7 安装与卸载 Mysql 5.7.27(详细完整教程)

目录 卸载 安装 卸载 1、关闭MySQL服务 systemctl stop mysqld2、使用 rpm 命令查看已安装的安装包 [nameVM-20-12-centos mysql1]$ rpm -qa|grep mysql 3、使用yum卸载安装的mysql [nameVM-20-12-centos mysql1]$ sudo yum remove mysql mysql-server mysql-libs mysql…

【LeetCode每日一题:775.全局倒置与局部倒置~~~维护前缀最大值】

题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;表示由范围 [0, n - 1] 内所有整数组成的一个排列。 全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目&#xff1a; 0 < i < j < n nums[i] > nums[j] 局部倒置 的数目等于满足下述条件的下标 …

Air780E连接点灯科技-LuatOS

前面发了腾讯云点灯以后&#xff0c;有朋友提到了点灯科技&#xff0c;人家都叫点灯科技了&#xff0c;那咱们学点灯必须连一下试试呀。本文将记录如何将设备连接点灯云平台&#xff0c;并通过手机进行远程控制 先上成果演示 一、点灯云准备 下载点灯科技的app-blinker&#…

Offsets 获取该行的起始索引 start=offsets (x)

获取数据列的第 x 行&#xff0c;通过 Offsets 获取该行的起始索引 startoffsets (x) 和下一行的起始索引 endoffsets (x1)&#xff0c;然后使用这两个索引通过 Bytes 获取具体数据对应的字节流 bytes.slice (start,end)&#xff0c;最后按照字段类型做相应的转换即可。 注&am…

QGC二次开发基础

文章目录 前言一、添加文件到QGC工程二、添加界面三、QML和C++交互四、信号与槽五、测试前言 QGC 4.2.4 一、添加文件到QGC工程 在qgroundcontrol/src目录下创建SimpleTest文件夹 在文件夹中创建SimpleTest.cpp、SimpleTest.h和SimpleTest.qml三个文件 在qgroundcontrol.p…

锁竞争导致的慢sql分析

线上在同步用户时&#xff0c;经常出现简单sql的慢日志。根据方法找到代码&#xff0c;发现方法内使用redisson进行锁操作&#xff0c;waiTime和leaseTime都为3秒,数据库操作比较简单&#xff0c;只是一个简单的用户更新操作。代码简化后如下 Override Transactional(rollback…

客流分析统计摄像头可定制算法程序自动判断识别提醒

客流分析统计摄像头是一个专门为商业零售业企业开发的智能客流量统计分析系统。客流统计分析系统能实时、动态、准确、连续地记录着经营场地的客流的数据信息&#xff0c;既有当前客流又有历史客流&#xff0c;既有不同时段的&#xff0c;又有不同区域客流数据。 客流分析统计摄…

【论文】Poly-yolo: 改进anchor分配问题

文章目录Poly-yolo: higher speed,more precise detection and instance segmentation for yolov31 修改了骨干网络增加CE模块2 重写标签3、修改了输出层3.1 修改细节3.2 修改目的&#xff1a;改进anchor分配问题4 检测多边形 Instance segmentation with Poly-YOLO4.1 The pri…

【Pytorch with fastai】第 9 章 :表格建模深入探讨

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

95后工程师上班哼小曲?那些愉快上班的打工人,到底怎么做到的?

特别羡慕我们公司一个画PCB板子的刘工&#xff0c;95后&#xff0c;来公司也3年多了&#xff0c;他不是我们部门赚得最多的&#xff0c;也不是人际关系处得最好的&#xff0c;却是活得最开心的。 具体表现在哪呢&#xff1f; ——他居然能每天哼着小曲上班。 怎么会有人上班…

《Linux下的进程创建》

【一】fork函数初识 在Linux中fork函数是非常重要的&#xff0c;他从已存在的进程中创建一个新进程&#xff0c;进程为子进程&#xff0c;而原进程为父进程。 返回值&#xff1a;fork函数的返回值是非常有意思的&#xff0c;他是有两个返回值的&#xff0c;对于父进程来说&…

QRegExp(正则表达式)

QRegExp 头文件&#xff1a;#include<QRegExp> 构造函数&#xff1a; 常用函数&#xff1a; indexIn()判断是否符合规则matchedLength()返回最后一个匹配字符串的长度&#xff0c;没有的话返回-1setPattern()将模式字符串设置为模式。区分大小写、通配符和最小匹配选项不…

openpnp软件的使用 - 引入坐标文件

文章目录openpnp软件的使用 - 引入坐标文件前言笔记生成符合openpnp要求的坐标文件板子在openpnp设备上摆放的规则确定openpnp设备的x,y方向确定自己板子的原点坐标和xy方向在openpnp设备平台上摆放板子在openpnp中引入坐标文件新建任务新建板子引入板子的坐标文件设置mark点Pa…

Starday影响者视频能给你提升80%的流量?

跨境电商行业随着互联网时代的推进&#xff0c;Starday跨境电商平台受到越来越多的人关注&#xff0c;许多商家受碍于疫情影响&#xff0c;为了个人商家和企业发展&#xff0c;将目光投于海外。如雨后春笋般出现的跨境电商平台&#xff0c;也为商家带来了许多困扰&#xff0c;该…

JS高级(一):类、原生tab栏切换、原型和原型链

JavaScript高级&#xff08;一&#xff09;一、类&#xff08;之前ES6学过&#xff09;1.类的用法2.类的继承2.1 extends关键字2.2 super关键字&#xff08;1&#xff09;子类属性和父类一致&#xff0c;constructor可以省略&#xff08;2&#xff09;子类要添加属性&#xff0…

axios 实现 POST/PUT接口入参是 query的形式而非JSON的形式——querystring的使用

先看下什么是query的形式入参&#xff1a; 1.常规的GET请求 一般是GET请求才会是query string parameters的形式入参 参数是query string parameters的展示&#xff0c;最终效果是拼接到url地址中&#xff0c;如下图所示&#xff1a; 2.常规的POST/PUT请求 一般是POST/PUT请…

云小课|使用SQL加密函数实现数据列的加解密

摘要&#xff1a;数据加密作为有效防止未授权访问和防护数据泄露的技术&#xff0c;在各种信息系统中广泛使用。作为信息系统的核心&#xff0c;GaussDB(DWS)数仓也提供数据加密功能&#xff0c;包括透明加密和使用SQL函数加密。本文分享自华为云社区《看GaussDB(DWS)如何使用S…

电感单位亨利H单位换算

1H 1e-18EH 1e-15PH 1e-12TH 1e-9GH 1e-6MH 0.001kH 1H 1,000mH 1,000,000uH 1,000,000,000nH 1,000,000,000,000pH 1,000,000,000,000,000fH 在线H亨利单位换算 (toolxq.com)http://www.toolxq.com/front/tools/trans/unit/H 亨利是电感的国际单位制导出单位&#xff0c;符…

2022年《微信小程序从基础到uni-app项目实战》

教程推荐&#xff1a;黑马程序员前端微信小程序开发教程&#xff0c;微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)_ 一、起步 1 uni-app 简介 uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码&#xff0c;可发布到 iOS、And…