博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 跨域问题解决方法
阅读量:5751 次
发布时间:2019-06-18

本文共 3950 字,大约阅读时间需要 13 分钟。

产生跨域问题的原因

跨域问题是浏览器同源策略限制,当前域名的js只能读取同域下的窗口属性。

哪些情况会产生跨域问题

一个网站的网址组成包括协议名,子域名,主域名,端口号。比如  ,其中https是协议名,www是子域名,github是主域名,端口号是80,当在在页面中从一个url请求数据时,如果这个url的协议名、子域名、主域名、端口号任意一个有一个不同,就会产生跨域问题。

解决跨域问题

解决跨域问题有以下方式

  • 使用jsonp
  • 服务端代理

==========================================================

以上是百度一下都可以查到的说明,我之前也查了很多文章提到jsonp或者后台代码代理请求解决跨域请求json数据的方案。

其实从项目A请求项目B的数据做显示 我选择了后台处理,原因是我的数据要处理一下重新封装再给前端

思路是   1.ajax请求自己的后台---->    2.java代码用HttpClients去请求B项目---->    3.拿到B项目的数据---->     4.封装数据json串返回前端

上代码看吧!!!!

$ajax({    url: 'serchPage.do',    data: {},    dataType: "json",    success: function(data){            data = data.data.rows[0];    }})
'serchPage.do'请求后台
@ResponseBody    @RequestMapping("/serchPage")    public String serchPage(HttpServletRequest request,Model model){
String keyword = request.getParameter("keyword"); if(WexinCommon.inquire(keyword)){ String json = HttpClientsUtil.get(WexinCommon.SEARCH_URL + "keyword=" + keyword);return json; }return null; }

HttpClientsUtil这个类提成common

package com.cn.common;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.StatusLine;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.apache.log4j.Logger;import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; /** * 跨域请求 * @author Administrator * */public class HttpClientsUtil {    private static final CloseableHttpClient httpclient = HttpClients.createDefault();        private static final Logger log = Logger.getLogger(HttpClientsUtil.class);        public static String get(String url) {        try {                        HttpGet httpGet = new HttpGet(url);                            CloseableHttpResponse response = null;            response = httpclient.execute(httpGet);            StatusLine statusLine = response.getStatusLine();            String result = "";            HttpEntity entity = response.getEntity();            result = EntityUtils.toString(entity);            return result;        } catch (IOException e) {            e.printStackTrace();        }        return null;    }         public static String post(String url, Map
map) throws ParseException, IOException{ String body = ""; //创建post方式请求对象 HttpPost httpPost = new HttpPost(url); //装填参数 List
nvps = new ArrayList
(); if(map!=null){ for (Entry
entry : map.entrySet()) { if(null!=entry.getValue()){ nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } } //设置参数到请求对象中 httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")); //执行请求操作,并拿到结果(同步阻塞) CloseableHttpResponse response = httpclient.execute(httpPost); //获取结果实体 HttpEntity entity = response.getEntity(); if (entity != null) { //按指定编码转换结果实体为String类型 body = EntityUtils.toString(entity, "UTF-8"); } EntityUtils.consume(entity); //释放链接 response.close(); return body; } }

同理post请求的数据封装成map对象

-------------------------------------------------------------------

以上是我的方法 小伙伴们试一下吧……

转载于:https://www.cnblogs.com/ttscoupe/p/7658777.html

你可能感兴趣的文章
【转】如何在CentOS/RHEL中安装基于Web的监控系统 linux-das
查看>>
最少拦截系统
查看>>
Leetcode 804. Unique Morse Code Words 莫尔斯电码重复问题
查看>>
JAVA UUID 生成
查看>>
hive基本操作与应用
查看>>
angular-bootstrap ui-date组件问题总结
查看>>
读书笔记--C++ Template(The complete guide)--Chapter3--类模板
查看>>
poj 3267 -- The Cow Lexicon
查看>>
[经验转帖]在豆瓣上直接下载你喜欢的书
查看>>
[Asp.net core]bootstrap分页
查看>>
jee 命令行打包war(转)
查看>>
PostgreSQL表空间_数据库_模式_表_用户角色之间的关系[转]
查看>>
Linux常见命令(二)
查看>>
纯数学教程 Page 325 例LXVIII (9)
查看>>
document.write()的用法和清空的原因
查看>>
【EXLUCAS模板】【拓展卢卡斯详解】【组合数高级篇】LuoGu P4720
查看>>
PyCharm切换解释器
查看>>
一些基本的灰度变换函数
查看>>
java中的@Override是否需要
查看>>
postgresql connection refused 5432 win10
查看>>