java用什么方法可以跨域提交表单

程序员小贝 发布于 2018/08/13 17:15
阅读 442
收藏 1

RT:A网站提交表单数据到B网站

但是提交到B网站form action是有账号密码验证拦截的,也就是说先要认证成功才能action接收到数据,试了几种办法都不行

各位大大们有什么好的建议说说,一般这种跨域post提交操作用什么技术比较好

加载中
0
程序员小贝
程序员小贝

图片、缩略图post不过去,还在研究中.....

研究测试如下可以完成此需求(只是针对表单信息,图片不行),主要代码如下:

  RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build();
        CookieStore cookieStore = new BasicCookieStore();
        HttpClientContext context = HttpClientContext.create();
        context.setCookieStore(cookieStore);
        CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig)
                .setDefaultCookieStore(cookieStore).build();
        CloseableHttpResponse res = null;



 List<NameValuePair> valuePairs = new LinkedList<NameValuePair>();
                valuePairs.add(new BasicNameValuePair("name", name));
                valuePairs.add(new BasicNameValuePair("pass", password));
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(valuePairs, Consts.UTF_8);
                entity.setContentType("application/x-www-form-urlencoded");
                HttpPost post = new HttpPost(loginUrl);
                post.setEntity(entity);
                res = httpClient.execute(post, context);
                System.out.println("Cookie:");
                for (Cookie c : context.getCookieStore().getCookies()) {
                    System.out.println(c.getName() + ": " + c.getValue());
                }
                res.close();

 

0
程序员小贝
程序员小贝

 如下实验了一下可以拿到登录成功信息,但是登录成功后怎么去操作保存cookies还是怎么着,有没有做过类似的功能的

 

HttpPost httpPost = new HttpPost(url);
        CloseableHttpClient client = HttpClients.createDefault();
        String respContent = null;

List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); 
        pairList.add(new BasicNameValuePair("name", "admin"));
        pairList.add(new BasicNameValuePair("pass", "admin"));
        httpPost.setEntity(new UrlEncodedFormEntity(pairList, "utf-8"));   
        
        HttpResponse resp = client.execute(httpPost);
        if(resp.getStatusLine().getStatusCode() == 200) {
            HttpEntity hEntity = resp.getEntity();
            respContent = EntityUtils.toString(hEntity,"UTF-8");
        }
        return respContent;

0
zh0
zh0

一般是服务端允许的

0
程序员小贝
程序员小贝

继续回帖,图片其实跟表单文件一样的,一般图片都是用编辑器来上传的,还是一样原理,登录拿到cookies然后抓包编辑器的上传功能,抓到上传表单信息调用上传功能就可以,最后会返回上传好的图片路径,然后就解决了呗

返回顶部
顶部