当前位置: 首页 > 知识库问答 >
问题:

React代理不工作http代理中间件

孟英叡
2023-03-14

我在react应用程序中遇到了很多CORS问题,我做了很多研究,发现我必须使用代理。

我尝试在包中使用代理。通过添加

"proxy": "https://api.clashroyale.com/",

然后我尝试删除上面的内容并创建setupProxy。包含以下内容的js:

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/v1/players',
    createProxyMiddleware({
      target: 'https://api.clashroyale.com/',
      changeOrigin: true,
    })
  );
};

我的请求在应用程序中看起来像这样。点击按钮时会发生这种情况:

const clicksearch = () => {
        const headers = {
            "Authorization": "Bearer token",
            "Content-Type": "application/json",
        }
        axios.get("v1/players/#123TAG", {headers})
            .then(response => {
                console.log(response.data);
            })
            .catch((error) => {
                console.log('error ' + error);
            });
}

我也尝试在. get中使用https://api.clashroyale.com/v1/players/#123TAG,但也没有运气。任何关于如何解决这个问题的提示都是惊人的

使用时从服务器得到的响应https://api.clashroyale.com/v1/players/#123TAGas get请求

Access to XMLHttpRequest at
 'https://api.clashroyale.com/v1/players/%232Y900L99' from origin 
'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

而我在使用v1/Player/#123TAG时得到的反应是

GET http://localhost:3000/v1/players/%232Y900L99 403 (Forbidden)

共有1个答案

莘羽
2023-03-14

您可以在后端执行CORS控制。在此问题之前,超文本传输协议-代理-中间件代理在React js和Spring Boot项目中不工作。GET API返回415状态错误(也许你也可以帮我:))我也阻止了这个问题。我就那样解决了;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Component
public class SimpleCORSFilter implements Filter {

    private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);

    public SimpleCORSFilter() {
        log.info("SimpleCORSFilter init");
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");

        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig filterConfig) {
    }

    @Override
    public void destroy() {
    }

}
 类似资料:
  • 嗨,我一直在尝试代理解决方案,以避免在myapp中的cors问题,但它似乎不起作用,我重启了我的机器这么多次,这没有什么区别。基本上,myapp使用ftchApi调用另一个域(localhost:8080),这是一个SpringBoot应用程序终结点。我添加了package.json"代理":"http://localhost:8080/",但api仍然返回与localhost:3000调用,我尝

  • 我试图使用Apache创建一个反向代理。我正在使用Apache为一个php应用程序提供服务,并在node中编写了一个使用Express的API。 在我的PHP应用程序中,我使用AJAX调用node来检索JSON。我希望使用端口80进行PHP应用程序中的调用,并使用Apache来表达一个反向代理。

  • 以下是我对这些的理解,我看到了很少的差距;特别是何时何地使用 HTTP(s)代理: 可用作TLS终止代理 可用于修改HTTP标头 可用作DMZ前面的负载均衡器或公共IP提供程序,以屏蔽后端服务器 TCP代理 可以用作TCP连接的反向代理,不仅支持HTTP而且支持其他应用层协议,如FTP 我的问题 如果我只接受HTTP web流量,我们应该使用TCP代理而不是HTTP代理的用例是什么 这种理解是连接

  • 问题可能也与我对这个概念的理解有关。 正在调用代理bean,它是。代理bean接口是使用类实现的。所以我期待返回的通过传递,然后在控制台上流式传输。 Application Context 会计界面 会计Util 动作课 但是我有例外: 还有一个问题,我可以为单个提供多个 我希望使用不同的方法调用不同的,但只是单个接口的一部分。

  • 我在conf/settings.xml中将maven代理设置设置为 但是当我运行maven build时,我得到了以下错误。有人能帮忙吗 详细日志

  • 我有一个创建-反应-应用程序前端,我需要代理和更改起源到我的烧瓶套接字-io后端开发期间,以绕过CORS。我已经建立了超文本传输协议-代理-中间件,这是我在过去的项目中成功完成的。我的roxy.js: 在套接字设置期间,我没有做任何特别的事情: 当我运行开发服务器时,它不会代理我的套接字iOS请求。我的服务器报告: 有没有想过我可能做得不对?