在本地使用React调用Java方法

问题描述 投票:0回答:2

如何使用Java和React创建完整的Web应用程序,而无需创建其他API,甚至不能使用用户名:密码身份验证的私有API。

我希望它是用JSP创建的。

是否有可能在本地响应Java方法?甚至创建一个只能在本地调用的restful API

谢谢

java reactjs rest api jsp
2个回答
1
投票

我不认为可以在诸如React之类的客户端库中与Java通信,而无需创建HTTP API。但是你可以创建一个并添加一些额外的安全层,以确保只有你的应用程序可以通过检查每个调用的远程地址并验证调用者确实是你的服务器来调用你的Java API。

您可以使用getRemoteAddr()对象中的HttpServletRequest方法在Java中执行此操作。

执行此操作的最佳方法是创建一个过滤器类,该类映射所有API链接并验证每个调用中的远程地址,然后确定是否应该允许它。

这是一个例子:

import javax.servlet.*;  

public class RequestFilter implements Filter{  

  public void init(FilterConfig config) throws ServletException {}  

  public void doFilter(ServletRequest req, ServletResponse res,  
      FilterChain chain) throws IOException, ServletException {  
        HttpServletRequest request = (HttpServletRequest)req;
        String callerIp = request.getRemoteAddr();
        if(callerIp.equalsIgnoreCase("MY-SERVER-IP-ADDRESS")) {
          chain.doFilter(req, res);
        }
        else {
          ((HttpServletResponse)res).sendError(HttpServletResponse.SC_FORBIDDEN, "Access denied !");
          return;
        }  
    }

    public void destroy() {}  
}  

将“MY-SERVER-IP-ADDRESS”替换为您的服务器IP。

要映射所有调用,请在web.xml中设置过滤器标记,如下所示:

<filter>
    <filter-name>RequestFilter</filter-name>
    <filter-class>com.myPackage.requestFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>RequestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

这应该满足您的需求,但如果您找到另一种方式,请与我们分享。


0
投票

据我所知,第一个请求是否定的。但至于本地休息api,我知道大多数网络服务器都可以检查CORS标头并限制仅在回答请求时提供某些来源。因此,无论您使用哪种JRE Web服务器,请检查其访问请求标头中的源的API,并将其路由到其余代码。

© www.soinside.com 2019 - 2024. All rights reserved.