解决跨域问题

跨域问题

解决跨域(CORS)

跨域资源共享(CORS)问题可以通过在Maven中添加依赖和配置web.xml来解决。

出现跨域问题:Access to XMLHttpRequest at ‘http://localhost:8080/CollegeHome/login’ from origin ‘http://localhost:5173’ has been blocked by CORS policy

在这里插入图片描述

1. 在Maven中添加依赖

在的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>java-property-utils</artifactId>
    <version>1.9.1</version>
</dependency>
<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>2.5</version>
</dependency>

2. 在web.xml中配置CORS过滤器

web.xml文件中添加以下内容:

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value> <!-- 允许所有来源 -->
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET, POST, HEAD, PUT, DELETE</param-value> <!-- 支持的方法 -->
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value> <!-- 支持的请求头 -->
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value> <!-- 暴露的响应头 -->
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value> <!-- 支持凭证 -->
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern> <!-- 应用到所有URL -->
</filter-mapping>

解释

  1. Maven依赖:添加了java-property-utilscors-filter两个依赖。
  2. CORS过滤器配置:
    • cors.allowOrigin:设置为*,表示允许所有来源。根据需要,可以指定具体的来源。
    • cors.supportedMethods:列出支持的HTTP方法。
    • cors.supportedHeaders:列出支持的HTTP请求头。
    • cors.exposedHeaders:列出客户端可以访问的响应头。
    • cors.supportsCredentials:设置为true,表示支持发送凭证(如Cookies)。

要解决返回密码的问题,确保在查询用户信息时不返回密码字段。以下是相应的MyBatis XML配置,只查询 user_iduser_name 字段:

<select id="login" parameterType="map" resultMap="userMap">
    SELECT user_id, user_name
    FROM users
    WHERE user_name = #{username}
      AND password = #{password}
</select>
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值