关于#后端#的问题,如何解决?(语言-java|开发工具-postman)

前后端对接时访问post请求的接口报403错误,而get请求的接口能正常访问,本机使用postman测试也能跑通,前端那边postman测试也能成功,但是在网页上面发送请求就会出现错误,,求解

跨域了?

可能是网页的问题,重装试试看

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/748039
  • 这篇博客你也可以参考下:Java|怎么解决postman模拟请求时400错误
  • 除此之外, 这篇博客: Java后端程序员常用测试工具与插件中的 一、Postman(接口测试工具) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 1、下载:https://www.postman.com/downloads/

    • 2、下载好之后的样子,如果是app的话需要注册登录在使用
      在这里插入图片描述

    • 3、默认有一个My Workspace,可以创建自己的Workspace,类似于工作空间

    • 4、选中Collections,点击加号,Collection是连接时的请求访问地址,这个类似于包管理,方便集中管理
      在这里插入图片描述

    • 5、创建一个请求访问地址,点击Add a request
      在这里插入图片描述

    • 6、请求到的结果
      在这里插入图片描述

    • 7、相关介绍
      在这里插入图片描述
      params里会自动显示参数
      1 Authorization:身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务。当前的一套helpers可以帮助你解决一些authentication protocols的问题。;
      2 Headers:请求的头部信息
      3 Body:post请求时必须要带的参数,里面放一些key-value键值对
      4 Pre-requerst Script:可以让你在 请求之前自定义请求数据,这个运行在请求之前,语法使用JavaScript语句。
      5 tests:tests标签功能比较强大,通常用来写测试,它是运行在请求之后。支持JavaScript语法。postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量以及对错情况。这个后面会进行详解,它也可以用来设计用例,比如要测试返回结果是否含有某一字符串
      6 form-data:,它将表单数据处理为一条消息,以标签为单元,用分隔符分开。既可以单独上传键值对,也可以直接上传文件(当上传字段是文件时,会有Content-Type来说明文件类型,但该文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加文件。);post请求里较常用的一上传文件
      7 x-www-form-urlencoded:对应信息头-application/x-www-from-urlencoded,会将表单内的数据转换为键值对;
      8 raw:可以上传任意类型的文本,比如text、json、xml等,所有填写的text都会随着请求发送;
      9 binary:对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,

  • 您还可以看一下 邱石老师的java后台+微信小程序 实现完整的点餐系统课程中的 postman的使用小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料提供的信息和问题描述,出现403错误可能是因为请求被服务器拒绝了。以下是可能的解决方案:

    1.确认请求头信息:确保在网页上发送请求时,请求头信息与postman中发送的请求头信息一致。可以在postman中查看请求头信息,然后在代码中设置相同的请求头信息。

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpHeaders;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.util.EntityUtils;
    
    import java.io.IOException;
    
    public class HttpClientExample {
        public static void main(String[] args) throws IOException {
            String url = "your_api_url";
            String payload = "your_request_payload";
    
            CloseableHttpClient client = HttpClientBuilder.create().build();
            HttpPost httpPost = new HttpPost(url);
    
            // 设置请求头信息
            httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "your_content_type");
            httpPost.setHeader(HttpHeaders.AUTHORIZATION, "your_authorization");
    
            // 设置请求体内容
            StringEntity entity = new StringEntity(payload);
            httpPost.setEntity(entity);
    
            HttpResponse response = client.execute(httpPost);
    
            // 解析响应
            HttpEntity responseEntity = response.getEntity();
            String responseBody = EntityUtils.toString(responseEntity);
            System.out.println(responseBody);
    
            client.close();
        }
    }
    

    2.处理跨域问题:如果前后端的访问存在跨域问题,可以通过设置代理服务器来解决。参考资料中提供了使用Node.js中的express框架来搭建代理服务器的示例代码。可以参考该示例代码,在Java中使用类似的方式搭建代理服务器。

    import org.eclipse.jetty.proxy.ConnectHandler;
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.handler.HandlerList;
    import org.eclipse.jetty.server.handler.ProxyHandler;
    
    public class ProxyServerExample {
        public static void main(String[] args) throws Exception {
            Server server = new Server(8080);
    
            ProxyHandler proxyHandler = new ProxyHandler();
            proxyHandler.setProxyTo("your_backend_url");
    
            HandlerList handlers = new HandlerList();
            handlers.addHandler(proxyHandler);
    
            server.setHandler(handlers);
            server.start();
            server.join();
        }
    }
    

    3.检查权限设置:确保在访问post请求的接口时,具有足够的权限。可以与后端开发人员或服务器管理员联系,确认是否需要特定的身份验证或访问权限。

    如果以上解决方案都不适用,建议进一步排查并使用其他调试工具或与后端开发人员沟通,以便更准确地找到问题所在并解决。