跨域问题CORS

所谓跨域访问,其底层就是访问是否同源的问题,跨域问题跟前端的关系不大,后台只要在服务器上配置好浏览器需要的 header 就可以解决跨域的问题。浏览器的请求为什么不能跨越,主要是为了安全,比如攻击者给用户发了一封邮件,邮件有个链接,如果用户不小心点击了这个链接,用户就被带到了攻击者的网站。一旦进入了攻击者的网站,他能做的破坏就多了,下面举个转账的例子,这只是个例子。这是 CSRF 攻击的一种,这就就是为什么要限制跨域。

<body onload="document.forms[0].submit()"><form action="http://netbank.com/transfer.do" method="POST"><input type="hidden" name="acct" value="AttackerA"/><input type="hidden" name="amount" value="$100"/><input type="submit" value="View my pictures!"/></form></body>

怎么判断是否跨域,首先是根据域名进行对比,域名不同包括子域名不同都属于跨域,第二就是检查端口,如果端口不同也属于跨域。

URL结果原因
http://store.aws.com/dir2/new.html来源相同只有路径不同
http://store.aws.com/dir/inner/other.html来源相同只有路径不同
https://store.aws.com/page.html来源不同协议不同
http://store.aws.com:81/dir/page.html来源不同端口不同(默认情况下,http:// 的端口号为 80)
http://news.aws.com/dir/page.html来源不同主机不同

通常跨域问题都是在服务进行配置,比如下面的 Nginx 配置。

server {listen       80;server_name  example.com;# 添加CORS头部location / {add_header 'Access-Control-Allow-Origin' '*';  # 允许所有来源的请求add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';  # 允许的HTTP方法add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';  # 允许的请求头# 可选: 如果需要允许凭证(如cookie、HTTP身份验证),请添加Access-Control-Allow-Credentials头部# add_header 'Access-Control-Allow-Credentials' 'true';# 可选: 添加Access-Control-Max-Age头部以缓存预检请求的响应(单位:秒)# add_header 'Access-Control-Max-Age' 3600;if ($request_method = 'OPTIONS') {add_header 'Content-Type' 'text/plain; charset=utf-8';  # 设置响应的Content-Type头部add_header 'Content-Length' 0;  # 设置响应体长度为0return 204;  # 返回204 No Content响应}# 其他NGINX配置指令...}
}

对于跨域问题,现在前端开发的解决方案都是通过 proxy 进行代理,从而避免了跨域的问题,这里再次探讨一下跨域问题和跨域的问题的原理,浏览器如何判断,判断那些 header。

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

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

相关文章

鸿蒙开发快速入门

基本概念 ArkTS 因为ArkTS是基于Type Script扩展而来&#xff0c;是Type Script的超集&#xff0c;所以也可以关注一下Type Script的语法来理解ArkTS的语法 ArkUI HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架…

【日常记录】【CSS】SASS循环的使用

文章目录 1、引言2、安装3、举例4、参考链接 1、引言 目前在任何项目框架中&#xff0c;都会有css 预处理器&#xff0c;目前一般使用 sass、less 这俩其中之一&#xff0c;它可以简化css的书写 Sass 是一款强化 CSS 的辅助工具&#xff0c;它在 CSS 语法的基础上增加了变量 (v…

【深度学习实战(2)】如何使用matplotlib.pyplot模块记录自己的训练,验证损失

一、matplotlib库 在我们自己训练模型时&#xff0c;常常会使用matplotlib库来绘制oss和accuracy的曲线图&#xff0c;帮助我们分析模型的训练表现。 matplotlib库安装&#xff1a;pip install matplotlib 二、代码 import matplotlib.pyplot as plt import torch import to…

Leetcode 3116. Kth Smallest Amount With Single Denomination Combination

Leetcode 3116. Kth Smallest Amount With Single Denomination Combination 1. 解题思路2. 代码实现 题目链接&#xff1a;3116. Kth Smallest Amount With Single Denomination Combination 1. 解题思路 这一题思路上我一开始想的是直接法&#xff0c;但是没想到什么好的方…

设计模式-组合模式(Composite Pattern)

1. 概念 组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树状的层次结构&#xff0c;用来表示“整体-部分”的关系。 2. 原理结构图 原理图 抽象角色&#xff08;Component&#xff09;&#xff1a;这是组合模式的核心&#xff0c;它定义了树叶和树枝构件的公…

vue3从精通到入门22:自定义 Hooks

自定义 Hooks 就是将可重用的逻辑抽象到一个函数中&#xff0c;这样你可以在不同的组件中重复使用这些逻辑&#xff0c;而不必重复编写相同的代码。 使用场景 1. 处理异步数据 当你需要在多个组件中处理异步数据时&#xff0c;可以创建一个自定义 Hook 来封装相关的逻辑。 …

【产品经理修炼之道】- 融资租赁相关业务介绍

一、什么是融资租赁&#xff1f; 根据《民法典》第735条的规定&#xff0c;融资租赁合同是出租人根据承租人对出卖人、租赁物的选择&#xff0c;向出卖人购买租赁物&#xff0c;提供给承租人使用&#xff0c;承租人支付租金的合同。 例如&#xff0c;A工厂因业务发展需要欲购置…

c/c++普通for循环学习

学习一下 for 循环的几种不同方式&#xff0c;了解一下原理及差异 完整的测试代码参考 GitHub &#xff1a;for 循环测试代码 1 常用形态 对于 for 循环来说&#xff0c;最常用的形态如下 for (表达式1; 表达式2; 表达式3) {// code }流程图如下&#xff1a; 编写测试代码…

stack和queue模拟实现

前言 上一期我们介绍了stack和queue的使用&#xff0c;本期我们来模拟实现一下他们&#xff01; 本期内容介绍 容器适配器 deque介绍 为什么stack和queue的底层选择deque为默认容器&#xff1f; stack 模拟现实 queue 模拟实现 什么是容器适配器&#xff1f; 适配器是一种设…

编程新手必看,Python推导式学习总结(16)

介绍&#xff1a; Python推导式是一种简洁、高效的创建列表、字典或集合的方法。它使用一种类似于数学公式的语法&#xff0c;通过一个表达式和一个循环来生成一个新的数据结构。 以下是一些常见的Python推导式&#xff1a; 列表推导式&#xff08;List Comprehension&#xf…

springboot抑郁症科普知识测试系统ssm-java

本系统设计了二种角色&#xff1a;管理员&#xff0c;用户。通过此系统&#xff0c;管理员可以在线视频、案例展示、、测试试卷、测试试题进行测试。以及在线对测试试卷进行批阅和批量删除&#xff0c;用户可以对自己的测试试卷进行测试&#xff0c;对管理员已经批阅过的试卷可…

MySQL——链表

主键&#xff1a;非空 唯一&#xff08;针对整列数据而言&#xff09; 为了方便管理一般主键都是设置为自增 外键&#xff1a;一张表中的一列的值是另一张表的主键&#xff0c;使用外键建立两张数据表的数据关系 一、两张表连接 将两张表格拼接成一个表 1、格式&#xff1a;s…

Linux ln命令

ln 是 Linux 中的一个重要命令&#xff0c;用于创建硬链接或符号链接&#xff08;也称为软链接&#xff09;。链接在 Unix 和 Linux 系统中是文件系统中的一种对象&#xff0c;它引用另一个文件或目录。 以下是 ln 命令的基本用法和选项&#xff1a; 基本语法 ln [选项] 源文…

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

NL2SQL实践系列(1)&#xff1a;深入解析Prompt工程在text2sql中的应用技巧 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a;主流大模型…

cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决

无法获取本地颁发者证书 Windows版本 linux版本解决方案 cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决 Laravel 使用GuzzleHttp请求第三方https接口报错 获取 headers windows 清晰版本 Windows版本 1.到 https://curl.haxx.se/ca/cace…

STK与matlab交互 Astrogator模块 (11)

一、背景知识 前面由于定轨的大作业&#xff0c;关于Astrogator模块的学习有所滞后&#xff0c;在本节将重新聚焦Astrogator模块&#xff0c;在本节中&#xff0c;首先解决的问题是已知两个卫星的轨道六根数&#xff0c;求解其中某一颗卫星LVLH坐标下另一颗卫星的位置速度。这…

AI实践与学习4_大模型之检索增强生成RAG实践

背景 针对AI解题业务场景&#xff0c;靠着ToT、CoT等提示词规则去引导模型的输出答案&#xff0c;一定程度相比Zero-shot解答质量更高&#xff08;正确率、格式&#xff09;等。但是针对某些测试CASE&#xff0c;LLM仍然不能输出期望的正确结果&#xff0c;将AI解题应用生产仍…

AcWing 796. 子矩阵的和——算法基础课题解

AcWing 796. 子矩阵的和 题目描述 输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个询问&#xff0c;每个询问包含四个整数 x1,y1,x2,y2&#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n&…

js的函数

在JavaScript中&#xff0c;函数是一段可重复使用的代码块&#xff0c;它可以接收输入&#xff08;参数&#xff09;&#xff0c;执行某些操作&#xff0c;并可能返回输出。以下是JavaScript函数的一些基本示例和详细说明&#xff1a; 1. 基本函数 javascript复制代码 functi…

导航指令生成新篇章:将语义地图转化为机器人眼中的“道路”

引言&#xff1a;导航指令生成的挑战与机遇 在人工智能领域&#xff0c;视觉与语言导航&#xff08;Vision and Language Navigation, VLN&#xff09;任务是一个充满挑战的研究领域&#xff0c;它要求智能体根据自然语言指令在物理环境中进行导航。然而&#xff0c;VLN任务的…