跨域问题
解决跨域(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>
解释
- Maven依赖:添加了
java-property-utils
和cors-filter
两个依赖。 - CORS过滤器配置:
cors.allowOrigin
:设置为*
,表示允许所有来源。根据需要,可以指定具体的来源。cors.supportedMethods
:列出支持的HTTP方法。cors.supportedHeaders
:列出支持的HTTP请求头。cors.exposedHeaders
:列出客户端可以访问的响应头。cors.supportsCredentials
:设置为true
,表示支持发送凭证(如Cookies)。
要解决返回密码的问题,确保在查询用户信息时不返回密码字段。以下是相应的MyBatis XML配置,只查询 user_id
和 user_name
字段:
<select id="login" parameterType="map" resultMap="userMap">
SELECT user_id, user_name
FROM users
WHERE user_name = #{username}
AND password = #{password}
</select>