Java后端设置服务器允许跨域

这篇具有很好参考价值的文章主要介绍了Java后端设置服务器允许跨域。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、实现

以下通过servlet的Filter给所有响应的header加了一些跨域相关的数据,以实现允许跨域。

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
public class GlobalCorsFilter implements Filter {

    @Override
    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-Origin", "http://www.domain1.com");
        //允许所有方式的请求(GET、POST),用于告知浏览器哪些方法是被允许的
        response.setHeader("Access-Control-Allow-Methods", "*");
        //指定了预检请求(OPTIONS请求)的有效期,单位为秒。在有效期内,浏览器可以直接发送实际请求,而无需再次发送预检请求。
        //(如果不设 Chromium 同时规定了一个默认值 5 秒),没有缓存将以OPTIONS进行预请求
        response.setHeader("Access-Control-Max-Age", "3600");
        //允许的头信息,告知浏览器哪些自定义请求头字段是被允许的
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization");
        //代表是预检请求
        if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
            //直接让预检请求返回200,告诉浏览器可以发送实际请求了
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            //添加完头部信息后,直接放行
            chain.doFilter(req, res);
        }
    }
}

2、一些问题

关于各项请求头的作用

Java后端设置服务器允许跨域,JavaDev,java,服务器,开发语言,跨域

关于预检请求

Java后端设置服务器允许跨域,JavaDev,java,服务器,开发语言,跨域

简言之就是发送OPTION请求到服务器,服务器根据预检请求的请求头信息,自行判断是否允许跨域,并把判断结果放到响应的header中返回给浏览器。预检请求的请求头中包含了一些关键信息,例如请求方法、请求头字段、请求的URL等。以下是一个预检请求的示例:

请求方法:OPTIONS
URL:https://www.example.com/api/data

请求头字段:
Origin: https://www.example.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Content-Type

这个示例中,浏览器向 https://www.example.com 发送了一个OPTIONS请求,用于检查是否允许发送POST请求,并且是否允许包含Content-Type请求头字段。预检请求的服务器是当前URL的服务器,而不是跳转页面URL的服务器。预检请求是在发送实际请求之前进行的,用于检查服务器是否允许跨域请求。因此,预检请求会发送到当前URL的服务器,以获取服务器的许可。

Java后端设置服务器允许跨域,JavaDev,java,服务器,开发语言,跨域

3、一些补充

关于跨域的前端实现或者nginx实现,跳这篇:【跨域】 。文章部分概念贴图:

Java后端设置服务器允许跨域,JavaDev,java,服务器,开发语言,跨域

[截图来源:上面链接]

4、疑问点

我理解的是判断下是否为OPTION请求方式,是则加允许跨域的头部,不懂为啥旧项目给所有的请求都加:

Java后端设置服务器允许跨域,JavaDev,java,服务器,开发语言,跨域文章来源地址https://www.toymoban.com/news/detail-848055.html

到了这里,关于Java后端设置服务器允许跨域的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本地前端代理连接服务器后端gateway api浏览器提示cors跨域,如何解决?

    🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家 关注收藏订阅 !持续更新中,up!up!up!!   本地前端代理连接服务器后端gateway api浏览器提示

    2024年04月12日
    浏览(54)
  • JAVA-服务器搭建-创建web后端项目

       

    2024年04月22日
    浏览(71)
  • 服务器允许ssh登录root

    root 安装ssh 用 vim 打开 /etc/ssh/sshd_config   将 sshd_config 中的 PermitRootLogin 属性改为 yes   重启 sshd 服务

    2024年02月10日
    浏览(38)
  • 如何限定IP访问服务器端口(只允许指定IP访问数据库服务器的1433端口)

    1、找到“控制面板”-“Windows防火墙”-“高级设置”-“入站规则” 2、选中左侧的\\\"入站规则\\\",并点击右侧的\\\"新建规则\\\"   3、选择\\\"端口\\\",点击\\\"下一步\\\" 4、输入要限定访问的端口,这里是要限定访问数据库1433端口的IP,点击\\\"下一步\\\"    5、选择\\\"只允许连接(A)\\\"-“下一步”-“

    2024年02月12日
    浏览(45)
  • ubuntu服务器的mysql,更改root密码,并允许远程连接

    我只是一个搬运工 更改密码 远程连接

    2024年02月11日
    浏览(37)
  • windows配置成远程桌面连接服务器,允许多个同一用户同时登录

    要将Windows配置为远程桌面连接服务器并允许多个相同用户同时登录,请按照以下步骤操作: 在Windows服务器上打开“组策略编辑器”(gpedit.msc)。 转到“计算机配置”“管理模板”“Windows组件”“远程桌面服务”“远程桌面会话主机”“连接”。 找到“限制每个用户只能有

    2024年02月16日
    浏览(44)
  • python实现跨域代理服务器

    准备环境 python3.7+ 依赖:aiohttp 代码实现(代理服务器,返回响应体和进行跨域处理后的headers) 测试 写个get的方法 下载测试 结果 可以正常下载 并且在响应头中能看到Server:is my server 同时可以看到添加成功的Allow-Origin响应头

    2024年02月16日
    浏览(44)
  • FileZilla搭建FTP服务器图解教程,并允许外网访问NAT内网

    首先准备两个软件:1.服务器FileZilla Server 0.9.60.2 中文安装版 2.客户端:FILEZILLA 64位 绿色版。 这两个软件是免费开源的,可以在官网下载:下载 - FileZilla中文网   1.安装FTP服务 安装服务器FileZilla Server 0.9.60.2 中文安装版,按提示操作下一步默认安装 安装完后,自动打开软件登

    2024年02月06日
    浏览(42)
  • 【Windows防火墙配置Windows Server服务器只允许国内IP访问】

    由于是 Windows Server 不像宝塔直接带有防火墙功能,只能自己想办法 明明轻而易举能做到事, 就是不做为! 使用Windows自带防火墙,配置规则达到目标 这个网络上比较多,却存在ip地址量的不同 有6000条+的国内ip, 也有8000条+的, 最终选择了8000+的版本 网站: https://www.ipdeny.com 下载IP地址

    2024年02月04日
    浏览(70)
  • Vue中利用代理服务器解决跨域问题

    目录 第一章、了解跨域 第二章、解决跨域问题——代理服务器 2.1 了解原理 2.2 如何配置代理服务器 2.2.1 配置代理服务器(方法一) 2.2.2 配置代理服务器(方法二) AJAX及其相关知识应用(很详细)_❆VE❆的博客-CSDN博客 前端的8080端口需要向后端服务器3000端口请求数据,此

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包