web后端解决跨域问题

news2024/11/25 20:14:47

目录

什么是跨域问题

为什么限制访问

解决


什么是跨域问题

域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的,是浏览器对js施加的安全限制。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域。

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域.

URL

说明

是否允许通信

http://www.a.com/a.js
http://www.a.com/b.js

同一域名下

允许

http://www.a.com/lab/a.js
http://www.a.com/script/b.js

同一域名下不同文件夹

允许

http://www.a.com:8000/a.js
http://www.a.com:80/b.js

同一域名,不同端口

不允许

为什么限制访问

如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。既然有安全问题,那为什么又要跨域呢? 有时公司内部有多个不同的子域,比如一个是location.company.com ,而应用是放在app.company.com , 这时想从 app.company.com去访问 location.company.com 的资源就属于跨域

解决

此处我们只讨论后端的解决方式,叫做跨域资源共享(CORS)

服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许ajax进行跨域的访问。

在idea中我们通过配置过滤器和web.xml来实现跨域访问

public class CorsFilter implements Filter {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        //允许携带Cookie时不能设置为* 否则前端报错
        httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("origin"));//允许所有请求跨域
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");//允许跨域的请求方法GET, POST, HEAD 等
        httpResponse.setHeader("Access-Control-Allow-Headers", "*");//允许跨域的请求头
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");//是否携带cookie

        filterChain.doFilter(servletRequest, servletResponse);
}
}
<filter>
        <filter-name>corsFilter</filter-name>
        <filter-class>com.webback.filter.CorsFilter</filter-class>
</filter>
    <!--配置进入过滤器的映射地址    -->
<filter-mapping>
        <filter-name>corsFilter</filter-name>
        <url-pattern>/*</url-pattern>
 </filter-mapping>

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

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

相关文章

vue svg画渐变色线条

基于业务需求需要&#xff0c;需要使用svg画渐变色弧线并且采用虚线。并且封装成组件。 一、path路径 path路径是svg中最强大的图形&#xff0c;可以绘制各种svg所有能画的图形。 路径中的线是由d属性来绘制&#xff0c;属性参数由各种命令组成&#xff0c;以下是它的基本命…

解锁Python集合的妙用:常用函数与实例深度解析

Python的集合&#xff08;Set&#xff09;是一种无序且不重复的数据结构&#xff0c;拥有强大的去重和集合运算功能。在这篇博客中&#xff0c;我们将深入探讨集合的常用函数&#xff0c;并通过实际案例为你展示其灵活应用。 创建集合​ 集合可以通过花括号来创建&#xff0c…

[数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库&#xff0c;用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章&#xff1a;MovingPandas入门指北&#xff0c;本文主要介绍三个MovingPandas的绘图实例。 MovingPandas官方仓库地址为&#xff1a;mo…

地理测绘基础知识(1) 坐标系经纬度与ECEF直角坐标的基本换算

经纬度与ECEF直角坐标的基本换算 我们目前最常用的全球坐标系是WGS-84坐标系&#xff0c;各种手机、地图基本用经纬度来标记位置。然而&#xff0c;经纬度对于空间的计算是很复杂的&#xff0c;需要很多三角函数操作。平面直角坐标系利用向量的运算&#xff0c;可以非常方便的…

【24择校指南】北方工业大学计算机考研考情分析

北方工业大学(B-) 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分数人数统计&#xff09;、院校概况、23专业目录、23复试详情、23各科目和各专业考情分析。 正文1720字&#xff0c;预计阅读&#xff1a;5分钟。 2023考情概况…

UGUI基础游戏对象Canvas

一.画布Canvas对象概述 画布是一种带有画布组件的游戏对象&#xff0c;所有 UI 元素都必须是此类画布的子项。 创建新的 UI 元素&#xff08;如使用菜单 GameObject > UI > Image 创建图像&#xff09;时&#xff0c;如果场景中还没有画布&#xff0c;则会自动创建画布。…

在安装 ONLYOFFICE 协作空间社区版时如何使用额外脚本参数

ONLYOFFICE 协作空间社区版是免费的文档中心工具&#xff0c;可帮助您将用户与文档聚合至同一处&#xff0c;提高协作效率。 ONLYOFFICE 协作空间主要功能 使用 ONLYOFFICE 协作空间&#xff0c;您可以&#xff1a; 邀请他人&#xff0c;协作和沟通完成工作创建协作房间&…

React(5)

1.受控组件案例 1.1之前的影院案例改写 import React, { Component } from react import axios from axios import BetterScroll from better-scroll import ./css/02_tab.cssexport default class Cinema extends Component {constructor() {super();this.state {cinemaLis…

谈谈闭包和闭包使用场景

一、什么是闭包 概念&#xff1a;闭包还是作用域的一种特殊应用 二、触发闭包的情况 1.函数当做返回值被返回 2.函数当做参数被传递 3.自执行匿名函数 //情况1&#xff1a;函数当做返回值被返回 function fn(){const a 1;return function(){console.log(a) //1}; } const a …

每日一题——滑动窗口的最大值

滑动窗口的最大值 题目链接 暴力解法 最容易想到的当然还是通过两层循环来暴力求解&#xff1a;一层循环用来移动窗口&#xff0c;一层循环用来在窗口内找到最大值。这种做法的时间复杂度为O(kN)&#xff0c;会超出时间限制&#xff0c;因此&#xff0c;我们要找到更加高效的…

【c语言】 -- 指针进阶

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习指针进阶。 让我们开启c语言学习…

基于免费开源的Odoo平台搭建铸造行业的MES管理系统

Odoo是世界排名第一的免费开源企业管理软件平台&#xff0c;该平台历经20年&#xff0c;构建了世界最大的企业软件应用市场&#xff0c;应用市场上有几万个插件&#xff0c;功能涵盖企业信息化的方方面面业务&#xff0c;包括CRM、ERP、MES、WMS、HRMS、OA、CMS等等。 今天介绍…

新版PMP考试中,敏捷是怎么考的?

01新版考试中的敏捷是怎么考的&#xff1f; 接下来说一下大家最为关注的敏捷内容。这次改版后&#xff0c;题目中添加了大量的敏捷题型&#xff0c;总体比重还是很高的&#xff0c;主观感觉达到了1/3。但和ACP认证相比&#xff0c;PMP中对敏捷管理技术的考察相对来说比较简单&…

JDBC连接数据库如何实现你会吗???

1.首先建立一个maven项目。。。详细过程来了哇 还没有安装maven的童鞋可以看这里&#xff1a;maven的下载安装与配置环境变量&#xff01;&#xff01;&#xff01;&#xff08;全网最详细&#xff09;_明天更新的博客-CSDN博客 有很多小伙伴就有疑问啦&#xff0c;难道我直接…

云计算-知识点大纲

前言&#xff1a;云计算的基本概念学习&#xff0c;基础知识大纲梳理。 目录 云计算的概念 云计算的特征 部署模式 服务模式 云计算的发展 云计算的核心技术 虚拟化技术 常见的虚拟化技术 服务器虚拟化 裸金属型技术 服务器虚拟化技术的特点 存储虚拟化 CPU 内存…

iOS开发-WebRTC本地直播高分辨率不显示画面问题

iOS开发-WebRTC本地直播高分辨率不显示画面问题 在之前使用WebRTC结合ossrs进行推流时候&#xff0c;ossrs的播放端无法看到高分辨率画面问题。根据这个问题&#xff0c;找到了解决方案。 一、WebRTC是什么 WebRTC是什么呢&#xff1f; WebRTC (Web Real-Time Communicatio…

Qt应用开发(基础篇)——拆分器窗口 QSplitter

一、前言 QSplitter继承于QFrame&#xff0c;QFrame继承于QWidget&#xff0c;是Qt的一个部件容器工具类。 框架类QFrame介绍 QSplitter拆分器&#xff0c;用户通过拖动子部件之间的边界来控制子部件的大小&#xff0c;在应用开发中数据分模块展示、图片展示等场景下使用。 二、…

React集成tinymce插件

目录 一、Tinymce介绍 二、React集成Tinymce 1、安装tinymce/tinymce-react组件 2、React中引用 三、如何配置中文语言包 1、下载中文包 2、把语言文件放入tinymce 3、tinymce配置项中配置语言 一、Tinymce介绍 官网&#xff1a;The Most Advanced WYSIWYG Editor | T…

Django路由Router

文章目录 一、路由router路由匹配命名空间反向解析 二、实践创建用户模型Model添加子路由 - 创建用户首页页面跳转 - 使用反向解析和命名空间1. 不使用命名空间的效果2. 使用命名空间的效果 用户详情页面跳转 - 路由传参路由传递多个参数re_path 以前写法,了解即可重定向Redire…

nodejs+vue+elementui美食网站的设计与实现演示录像2023_0fh04

本次的毕业设计主要就是设计并开发一个美食网站软件。运用当前Google提供的nodejs 框架来实现对美食信息查询功能。当然使用的数据库是mysql。系统主要包括个人信息修改&#xff0c;对餐厅管理、用户管理、餐厅信息管理、菜系分类管理、美食信息管理、美食文化管理、系统管理、…