如何解决我在使用 Vue JS 应用程序时遇到的以下 CORS 错误 [关闭]

Posted

技术标签:

【中文标题】如何解决我在使用 Vue JS 应用程序时遇到的以下 CORS 错误 [关闭]【英文标题】:How to resolve the below CORS error I am getting with Vue JS app [closed] 【发布时间】:2020-11-21 19:21:54 【问题描述】:

我在 Spring Boot 中有一个前端和 Vue 和后端,在 Spring Boot 应用程序中我有一个带有 2 个端点的控制器 - /api/v1/user/login (POST) 和 /api/v1/user/得到(得到)。我在控制器上添加了@CrossOrigin 注释。这个想法是向登录端点发出请求,从响应中检索 jwt 令牌,然后通过在“授权”标头中传递令牌来调用 get 端点。当我调用登录端点时,它工作正常并且我得到了令牌,但是当我调用 get 端点时,我在 chrome 中得到一个 CORS 错误,如下所示。我不知道为什么一个端点工作,但另一个抛出 CORS 错误。

CORS 策略已阻止从源“http://localhost:8082/api/v1/user/get”访问 XMLHttpRequest 源“http://localhost:8081”:对预检请求的响应不'不通过访问控制检查:它没有 HTTP ok 状态。

当我检查“网络”选项卡时,我还观察到一个奇怪的行为,两个请求将发送到 get 端点,一个带有“授权”标头,另一个没有它。我也不知道为什么会这样。

【问题讨论】:

为什么我无法回答这个问题。回答选项已禁用。 ***.com/questions/42016126/… 【参考方案1】:

您必须在后端应用程序中配置 cors。 使用此配置,您应该能够连接到您的后端。但是您必须在应用程序中正确配置 CORS。 哪里有'*',你必须指向你的前端服务的地址。

假设您的 vuejs 应用程序在 http://localhost:3000 中运行 您必须将您的 cors 配置为指向该地址:

 res.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");

在开发中,您应该指向您的前端正在服务的地址。

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class OriginsFilterConfiguration implements Filter 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException 
        HttpServletResponse res = (HttpServletResponse) response;
        res.addHeader("Access-Control-Allow-Origin", "*");
        res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
        res.addHeader("Access-Control-Allow-Headers", "Content-Type");
        chain.doFilter(request, response);
    


了解更多关于 cors follow link.

【讨论】:

这是更好的解决方案:***.com/questions/42016126/…

以上是关于如何解决我在使用 Vue JS 应用程序时遇到的以下 CORS 错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我在使用带有电子的 vue js 进行捆绑时遇到问题

使用 Masonry.JS 和 Vue.JS

如何在 Vue.js 中隔离组件

如何解决“vue-cli-service”不被识别为内部或外部命令?

使用 Laravel 实现 vue js 时遇到问题

Vue js在编译时正在删除脚本标签