cors spring_Spring,REST,Ajax和CORS

cors spring

假设您正在为客户端开发基于JavaScript的项目,并且他通过其余的Web服务向服务器发出ajax请求,那么您可能会遇到一些麻烦,尤其是如果双方都在单独的域中。

实际上,出于安全原因,从一个域A到另一域B的Ajax请求未被授权。

幸运的是,W3C引入了所谓的CORS(跨源资源共享),它为服务器提供了更好地控制跨域请求的可能性。

为此,服务器必须在响应中添加HTTP标头,以向客户端指示允许的来源。

此外,如果使用自定义标头,则出于安全考虑,浏览器将无法读取它们,因此必须指定要公开的标头。 因此,如果您无法在JavaScript代码中检索自定义的HTTP标头值,则应阅读下一步

标头列表:

访问控制允许来源

Access-Control-Allow-Origin: <origin> | *

origin参数指定可以访问资源的URI。 浏览器必须执行此操作。 对于没有凭据的请求,服务器可以将“ *”指定为通配符,从而允许任何源访问资源。

访问控制公开标头

Access-Control-Expose-Headers: X-My-Header

此标头使服务器允许浏览器访问的白名单标头。 添加自定义标头时,这非常有用,因为通过将它们添加到“ Access-Control-Expose-Headers”标头中,可以确保浏览器将能够读取它们。

访问控制最大年龄

Access-Control-Max-Age: <delta-seconds>

该标头指示可以将预检请求的结果缓存多长时间。

访问控制允许方法

Access-Control-Allow-Methods: <method>[, <method>]*

指定访问资源时允许的一种或多种方法。 这用于响应预检请求。 上面讨论了请求被预检的条件。

访问控制允许标题

Access-Control-Allow-Headers: <field-name>[, <field-name>]*

用于响应预检请求,以指示发出实际请求时可以使用哪些HTTP标头。

现在让我们看看如何使用Spring添加此标头

首先,我们需要创建一个实现Filter接口的类:

package hello;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;public class CORSFilter implements Filter {public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest request= (HttpServletRequest) req;response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Allow-Headers", "x-requested-with");response.setHeader("Access-Control-Expose-Headers", "x-requested-with"); chain.doFilter(req, res);}
}

现在,我们只需要将过滤器添加到servlet上下文中:

@Configuration
public class ServletConfigurer implements ServletContextInitializer {@Overridepublic void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {servletContext.addFilter("corsFilter", new CORSFilter());}
}

所有人,您现在可以发出跨域请求并使用自定义的HTTP标头!

翻译自: https://www.javacodegeeks.com/2014/07/spring-rest-ajax-and-cors.html

cors spring

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

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

相关文章

mysql bc_正则表达式——MySQL搜索过滤

正则表达式介绍在数据库的数据过滤过程中只用WHERE子句和LIKE操作符都是对于已知值进行的不管是匹配一个还是多个值&#xff0c;测试大于还是小于已知值&#xff0c;或者检查某个范围的值&#xff0c;都是使用已知的值当然MySQL语句也提供了通配符百分号(%)和下划线(_)来匹配多…

everything安装版和便携版有什么区别_A2奶粉内幕:国行版和澳洲版有什么区别 贵的不一定好!...

点击上方蓝字 关注我们申明&#xff1a;此文章来自第三方平台&#xff0c;绝无倾向性诱导。二桐粑粑转载分享。A2是全球首款添加了“A2-β酪蛋白”的奶粉&#xff0c;由新西兰A2公司于2013年推出&#xff0c;这款奶粉在澳洲一上架&#xff0c;就被妈妈们一扫而空。之后A2公司针…

哈希杰森

我最近写了一个简单的库&#xff0c;可预测地对json进行哈希处理 。 该实用程序基于出色的Jackson Json解析库构建 问题 我需要从相当大的基于json的内容生成的哈希值&#xff0c;以便稍后确定内容是否发生了更改。 将json视为字符串不是格式化的选项&#xff0c;键改组可能会…

java 什么时候用递归_如果要用Java实现算法,一定慎用递归

现象 &#xff1a;递归是我们很经典的一种算法实现&#xff0c;可以很好的描述一个算法的原理&#xff01;对于算法的描述、表现和代码结构理解上&#xff0c;递归都是不错的选择&#xff01;但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现&#xff0c;而是转换…

excel分两个独立窗口_Excel2010 多个独立窗口,解决单窗口无法显示多个文件的问题...

当我们需要编辑多个excel的时候&#xff0c;就会发现一个问题&#xff0c;Excel不能一个窗口下显示多个文档&#xff0c;每次编辑都进行切换就太麻烦了&#xff0c;那如何能解决这个问题呢&#xff1f;接下来跟我一起看看吧&#xff01;首先在开始菜单输入regedit.exe命令&…

jsp代码会被翻译成java代码吗_JAVA jsp技术

JSP的本质是一个类文件&#xff0c;它存储于tomcat(如果你使用tomcat)目录下的work文件夹中&#xff0c;该类文件继承了HttpJspBase类&#xff0c;而HttpJspBase类继承了HttpServlet类&#xff0c;所以其实质是一个servlet的类文件JSP脚本&#xff1a;1) ----- 内部的java代码翻…

excel冻结窗口_excel怎么冻结窗口?excel冻结窗口怎么设置?

excel冻结行或列的技巧教程&#xff1a;一、冻结第一列1.选择 视图 > 冻结窗格 > 冻结第一列。2.列A和列B之间出现的细线表明第一列已冻结。二、冻结前两列1.选择第三列。2.选择 查看 > 冻结窗格 > 冻结窗格。三、冻结列和行1.选择要在滚动时保持可见的行下方和列右…

java 判断对象是否是xml格式_java对象与xml格式之间的转换

java对象是可以直接与xml相互转换的&#xff0c;但需要导入包&#xff1a;xstream-1.3.1.jar&#xff0c;在创建对象的时候&#xff0c;注意一定要new一个DomDriver&#xff1b;成功的测试代码如下&#xff1a;package com.xml; import com.thoughtworks.xstream.XStream; impo…

复合主键 复合外键_复合双重错误

复合主键 复合外键总览 在上一篇文章中&#xff0c;我概述了为什么BigDecimal大部分时间都不是答案。 尽管可以构造double会产生错误的情况&#xff0c;但在BigDecimal遇到错误的情况下构造情况也一样容易。 BigDecimal更容易正确&#xff0c;但更容易出错。 轶事证据表明&…

web service接口_win7 添加环回网卡+H3C 模拟器 防火墙开启Web功能

1、按下win R键&#xff0c;在其中输入&#xff1a;hdwwiz&#xff0c;然后点击“确定”或者按回车键&#xff0c;打开“添加硬件”对话框。2、看到如下界面时&#xff0c;选择“网络适配器”(如下图所示)&#xff0c; 在接着出现的界面中&#xff0c;左方“厂商”一栏里选择“…

java 实现nfa的化简_DFA与NFA的等价性,DFA化简

等价性对于每个NFA M存在一个DFA M’&#xff0c;使得L(M)L(M’)--------等价性证明&#xff0c;NFA的确定化假定NFA M&#xff0c;我们对M的状态转换图进行以下改造&#xff1a;解决初始状态唯一性&#xff1a;引进新的初态结点X和终态结点Y&#xff0c;X,Y∉S&#xff0c;从X…

eclipse查看git地址_gitamp;github的入门实战

一、Git概述&#xff08;1&#xff09;定义Git是目前世界上最先进的分布式版本控制系统。&#xff08;2&#xff09;能干什么&#xff1f;解决冲突、管理权限、代码备份、协同开发、版本还原、历史追查、版本记录、分支管理、代码审查&#xff08;3&#xff09;集中管理型版本管…

使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...

发布-订阅消息系统在任何企业体系结构中都起着重要作用&#xff0c;因为它可以实现可靠的集成而无需紧密耦合应用程序。 在解耦的系统之间共享数据的能力并不是一个容易解决的问题。 考虑一个企业&#xff0c;其中具有使用不同语言和平台独立构建的多个应用程序。 它需要以响应…

php-fpm不停机更新,PHP-FPM 无法停止,停止后自动重启

问题描述今天修改了一个 php-fpm.conf 的配置&#xff1a;daemonize yes。然后使用 kill -USR2 cat /usr/local/var/run/php-fpm.pid 重启 php-fpm.执行 ps -ef | grep php-fpm 的结果如下图&#xff1a;501 25131 1 0 9:31下午 ?? 0:00.37 /usr/local/opt/php/sbin/php-fpm…

LINUX系统无线网频繁断开_Ubuntu系统安装amp;amp;解决WiFi不可用

写系统安装的文章太多太多了&#xff0c;我为何还要写哪&#xff1f; 因为文章太多太多了&#xff0c;乍一看各种操作猛如虎&#xff0c;实际上可能对你没有一点的帮助。好多文章只是讲解了如何安装ubuntu系统&#xff0c;对于安装后遇到的问题只字不提&#xff0c;笔者决定写一…

php 经典的算法,PHP各种经典算法

//-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low < $high){ $mid intval(($low$high)/2 ); if ($array[$mid] $k){ …

return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数&#xff0c;并且要求算法的时间复杂度为 O(log(m n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 [1, 3]nums2 [2]​则中位数是 2.0示例 2:nums1 [1, 2]nums2 [3, 4]​则中…

intellij 使用_使用IntelliJ书签

intellij 使用这是有关IntelliJ的精美书签功能的快速帖子。 IntelliJ使您可以为单行代码添加书签。 将某行添加为书签后&#xff0c;您可以使用多种方法直接跳回该行。 因此&#xff0c;最好在您经常使用的代码位置添加书签。 要创建一个新书签&#xff0c;只需在代码编辑器中…

JAVA听力源码,英语听力练习

A:Amanda ramone speaking .B:hi ,Amanda .it’A:hi,bob.did you get my report about ERS.B:Yeah,no peroblem.now,you said you were contacting anothercompany?A:yeah,I spoke to one this morning,worldwide relocation.and theylook good.B:and how well do they meet o…

vue-plugin-hiprint使用教程【1】

前言&#xff1a; 1、本文档适合新手 2、文档仅限于基本的使用&#xff0c;更深的高级应用请查阅相关资料 3、文档编写时相应功能都有测试过 4、教程文字代码有点多&#xff0c;CSDN无法一篇文章发布&#xff0c;所以拆分成若干篇 5、默默吐槽一句&#xff1a;CSDN无法承载太大…