热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ajax设置跨域请求参数,CORS跨域请求,设置5个参数,含义和注意要点都在这了!...

代码托管:Github和Gitee,国内用户使用Gitee下载速度较快。系统环境:Win10Ubuntu,JDK8ÿ

代码托管:Github和Gitee,国内用户使用Gitee下载速度较快。

系统环境:Win10/Ubuntu,JDK8,maven,node,docker。

依赖服务:MySQL8,Redis5

一,问题

Jeecg技术社区用户提报了一个跨域请求issue:

5ce5d0c89f52f005051fa9c01ba9f2d6.png

当前代码中设置了三个cors请求:

94257434e7b4a6ce9c11e0b4e4cc1dc0.png

因为新接入的第三方API传递COOKIE,则必须设置Access-Control-Allow-Credentials为true。

12b3ba5c1bd7bc3ed645cd632dd33e14.png

二,知识延伸

CORS是一个W3C标准,Cross-origin resource sharing,跨域资源共享,允许浏览器向跨源服务器发出XMLHttpRequest请求,解决了AJAX只允许同源使用的限制。

整个CORS通信过程由浏览器自动完成,与仅支持同源的AJAX代码完全一样。

浏览器一旦发现AJAX跨源请求,就会自动添加一些附加的头信息,有时还会多出一次附加的OPTIONS预检请求,但对用户是透明的。

为了支持CORS跨域访问,常在过滤器或者拦截器中添加的配置如下:

response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods", "POST,OPTIONS,GET");

response.setHeader("Access-Control-Allow-Headers", "accept,x-requested-with,Content-Type,X-Custom-Header");

response.setHeader("Access-Control-Allow-Credentials", "true");

response.setHeader("Access-Control-Max-Age", "3600");

1,Access-Control-Allow-Origin

必填字段,取值可以是请求时Origin字段的值,也可以是*,表示接受任意域名的请求。

2,Access-Control-Allow-Methods

必填字段,取值是逗号分隔的一个字符串,设置服务器支持的跨域请求的方法。

注意为了避免多次OPTIONS请求,返回的是所有支持的方法,逗号分隔。

3,Access-Control-Allow-Headers

可选字段,CORS请求时默认支持6个基本字段,XMLHttpRequest.getResponseHeader()方法:

Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。

如果需要支持其他Headers字段,必须在Access-Control-Allow-Headers里面指定。

4,Access-Control-Allow-Credentials

可选字段,布尔值类型,表示是否允许发送COOKIE。默认情况下,COOKIE不包括在CORS请求之中;如果设为true,即表示服务器允许在请求中包含COOKIE,一起发给服务器。

注意该值只能设为true,如果服务器不允许浏览器发送COOKIE,删除该字段即可。

5,Access-Control-Max-Age

可选字段,用来指定预检请求的有效期,单位为秒,在此期间不用发出另一条预检请求,不指定时即使用默认值,Chrome默认5秒。

常用浏览器有不同的最大值限制,Firefox上限是24小时 (即86400秒),Chrom是10分钟(即600秒)。

注意Access-Control-Max-Age设置针对完全一样的url,当url包含路径参数时,其中一个url的Access-Control-Max-Age设置对另一个url没有效果。

#web开发#

举报/反馈



推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
author-avatar
志强旻茜青民
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有