`

@Marked-CORS跨域请求:前后端分离

阅读更多

1. 请求过滤器:

/**
 *	OncePerRequestFilter保证在任何Servlet容器中都是一个请求只执行一次的过滤器。
*/
public class CorsFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        Properties props = PropertiesLoaderUtils.loadAllProperties("cors.properties");
        //允许的 客户端域名
        response.addHeader("Access-Control-Allow-Origin", props.getProperty("cors.allowed-origins"));
        //允许的 方法名
        response.addHeader("Access-Control-Allow-Methods", props.getProperty("cors.allowed-methods"));
        //允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
        response.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,token");
        //预检验请求时间
        response.addHeader("Access-Control-Max-Age", props.getProperty("cors.max-age"));//30 min
        response.addHeader("Access-Control-Allow-Credentials", "true");

        filterChain.doFilter(request, response);
    }

}

 

2. web.xml中配置跨域过滤器:

 

<!--配置跨域请求的过滤器-->
	<filter>
		<filter-name>cors</filter-name>
		<filter-class>com.jd.dashboard.cors.CrossFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>cors</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

3. 过滤器中的属性配置如下:

 

属性配置文件如下:cors.properties

#跨域请求CORS全局配置属性值

	#允许访问的客户端域名,例如:http://web.xxx.com
	cors.allowed-origins=http://front.xx.com

	#允许访问的方法名
	cors.allowed-methods=POST, GET, OPTIONS, DELETE

	#允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
	cors.allowed-headers=Content-Type

	#允许客户端访问的服务端响应头
	cors.exposed-headers=

	#是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true
	cors.allow-credentials=true

	cors.max-age=1800

 

 

由于jsonp只支持GET方式的请求,所以这种方式比较推荐。

0
1
分享到:
评论

相关推荐

    marked-linkify-it:使用linkify-it标记网址

    const linkify = require ( "marked-linkify-it" ) ; // or ES Module script // import marked from "https://cdn.jsdelivr.net/gh/markedjs/marked/lib/marked.esm.js"; // import linkify from ...

    marked-to-md:标记渲染器将 Markdown 渲染为... Markdown

    var mdRenderer = require ( 'marked-to-md' ) ; var source = '# Markdown to md renderer\nHello world!' ; var tokens = marked . lexer ( source ) ; var mdToMd = parser . parse ( tokens ) ; console . log ...

    六级考试:720核心词

    - *例句*:The declaration of independence marked the beginning of a new nation. #### 3. **inspiration** (灵感) - *含义*:激发创造力的想法或感受。 - *例句*:The artist found inspiration in the ...

    marked-sanitizer-github:一个marked.js的净化器,它以与GitHub相同的方式净化markdown中HTML元素

    $ npm install --save marked-sanitizer-github 用法 它输出一类SanitizeState因为该清理是有状态的。 您可以通过调用getSanitizer()方法来为标记的解析器获取一个消毒剂。 它返回一个要清除的函数对象。 con

    hexo-renderer-marked-plus:hexo-renderer 标记了更独特的标题 ID

    《Hexo-renderer-marked-plus:打造独特标题ID的JavaScript渲染器》 Hexo-renderer-marked-plus是一款针对Hexo博客框架的插件,它的主要功能是为Markdown解析提供更加独特且可定制化的标题ID。这个插件是在hexo-...

    TOEFL考试听力场景词组归类

    - marked:明显的 13. **表示拜访的词组**: - drop by/in/over/around:顺道拜访 - stop by/in/over:停留 - run in:顺便来访 - come over to:过来 - call on:拜访 - step in:走进去 - go to have a ...

    markdown:功能齐全的markdown解析器和编译器,以TypeScript编写

    这是marked的流行库的分支(从chjj / release-0.3.7,2017年12月1日合并合并请求#961)。 郎 目录 安装 npm install @ts-stack/markdown --save 用法 最少使用量: import { Marked } from '@ts-stack/markdown' ...

    hexo-renderer-marked:Hexo的Markdown渲染器

    安装$ npm install hexo-renderer-marked --save 十六进制4:&gt; = 2.0 十六进制3:&gt; = 0.2 十六进制2:0.1.x选项您可以在_config.yml配置此插件。 marked : gfm : true pedantic : false breaks : true smartLists : ...

    marked-images:简单的标记渲染器,可在markdown中包含图像属性。 还生成vimeo链接

    安装npm install marked-images用法注意:重大更改: 从 ,该库使用插件api。 var marked = require ( 'marked' ) ;var markedImages = require ( 'marked-images' ) ;// opts are optionalvar opts = { xhtml : ...

    marked-toc:已弃用

    npm i -g marked-toc --save 在任何降价文件中,添加&lt;!-- toc --&gt;要添加 TOC 的位置。 然后在命令行中,运行: toc [filename] 如果您将 toc 添加到README.md ,则无需添加[filename] ,只需运行toc 。 ...

    Cortex™ -A Series Version: 3.0 Programmer’s Guide

    Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM Limited, except as otherwise stated below in this proprietary notice. Other brands and names mentioned herein may be...

    mega6.06说明书

    - Find marked sites:查找已标记的位点。 - Highlight motif:突出显示已选中的位点。 5. Web菜单 - Query gene banks:直接链接到Genbank进行序列搜索。 - Do blast search:启动NCBI BLAST搜索,方便获取...

    Custom-Marked-Styles:Brett Terpstra 的 Marked 2 应用程序的自定义样式表

    标记的自定义样式 我为 Brett Terpstra 的定制的样式表。 您可以在找到有关其含义的说明。 香蒜 基于来自的。 目标: 令人愉悦的可读性(通过 Adob​​e 的) 移动优先考虑高密度(“视网膜”)屏幕分辨率 ...

    matlab初学代码-Marked-Tutorials:一些有用且出色的教程

    matlab初学代码标记教程 一些有用且出色的教程/书籍/链接。 不断更新我的生活。 如果您遇到/拥有与以下主题相关的出色教程,则欢迎PR! Python(基本) Python科学计算 Python机器学习和深度学习 ...

    OSPF报文解析

    - **Frame is marked: False**: 标记此帧为“否”,表示此帧没有特别的标记。 - **Frame is ignored: False**: 忽略此帧为“否”,表示此帧没有被忽略。 - **Protocols in frame: eth:ip:ospf**: 帧内包含的协议栈...

    my-express-blog:快递博客

    npm i config-lite connect-flash connect-mongo ejs express express-session marked moment mongolass objectid-to-timestamp sha1 winston express-winston --save npm i ...

    fis-parser-marked:fis编译markdown文件的解析器

    $ npm install -g fis-parser-marked $ vi path/to/project/fis-conf.js //use the `fis-parser-marked` plugin to parse *.md file fis . config . set ( 'modules.parser.md' , 'marked' ) ; //*.md will be ...

    marked-forms:从markdown生成html表单标签和输入控件

    标记形式 ... 从诸如[text ?input?](name)类的markdown链接生成标签和输入控件。 安装 npm install marked-forms 重大变化 从v3.0.0版本开始,该库使用插件api。...var markedForms = require ( 'marked-forms' )

    --makedown:基于marked的markdown,无后台

    基于Markdown的项目“--makedown”是一个利用marked库实现的前端应用,特别强调了其无需后台支持的特点。这意味着所有的处理都在用户浏览器端完成,利用了JavaScript的特性来实现markdown到HTML的转换,并且通过...

Global site tag (gtag.js) - Google Analytics