java解决跨域 多个号_java-解决跨域问题
今天刚在项目中解决了跨域,记录下javascript
首先了解下相关知识html
$.ajax jQuery的异步请求前端
jsonp :指定跨域异步请求时,后台接收参数名称,默认为callback
dataType:请求数据类型 -- 经常使用json,text,html 跨域请求时使用jsonp
jsonpCallback:指定使用jsonp时返回结果会调用哪一个方法来执行
后台相关知识java
contentType :普通json调用时,使用 application/jsonjquery
:跨域调用时由于返回结果后jQuery还会调用函数,因此使用 application/javascriptweb
大概解决流程ajax
前端:spring
/**
* Created by on 2017/5/6.
*/
define(['jquery', 'config'], function ($, config, module) {
//跨域回调
function jsonpCallback(res) {
return res;
}
return {
send: function (url, data, successFn, params) {
var req = {
url: config.serverUrl + url,
data: data || {},
dataType: "json",
success: function (res) {
jsonpCallback(res); //回调函数处理
//执行状态判断
if (res.respCode == '0000') {
successFn(res);
} else {
alert(res.respDesc);
}
},
error: function (xhr, status) {
//显示错误提示
alert("网络错误");
}
}
if (typeof(params) === 'undefined') {
params = {};
}
if (!params.async) {
req.async = true;
}
if (!params.contentType) {
req.contentType = undefined;
}
if (params.isUpload) {
req.url = config.uploadUrl + url;
}
if (!params.method) {
req.method = 'POST';
}
if (params.dataType) {
req.dataType = params.dataType;
}
var options = {
user_token: config.appContext.user_token
}
req.data = $.extend(options, req.data);
this.doRequest(req);
},
doRequest: function (params) {
$.ajax({
url: params.url,
async: params.async,
data: params.data,
timeout: 10000,
dataType: params.dataType,
jsonpCallback: "jsonpCallback", //指定回调函数
contentType: params.contentType || 'application/x-www-form-urlencoded',
success: params.success || null,
error: params.error || null
});
}
}
});
后台处理代码json
package org.roundchat.client.common.pipeline;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.home.common.model.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import com.alibaba.citrus.service.pipeline.PipelineContext;
import com.alibaba.citrus.service.pipeline.Valve;
import com.alibaba.citrus.util.StringEscapeUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class JsonpCallBackPipeline implements Valve{
private static final String DEFAULT_CONTENT_TYPE = "application/json";
private static final String DEFAULT_JAVASCRIPT_CONTENT_TYPE = "application/javascript";
private String contentType;
private String callbackContentType;
@Autowired
private HttpServletResponse response;
@Autowired
private HttpServletRequest request;
public void invoke(PipelineContext pipelineContext) throws Exception {
ResponseData respData = (ResponseData) pipelineContext.getAttribute("result");
PrintWriter out = response.getWriter();
response.setContentType(DEFAULT_CONTENT_TYPE);
String callback = request.getParameter("callback");
callback = StringEscapeUtil.escapeHtml(callback);
if(!StringUtils.isEmpty(callback)) {
response.setContentType(DEFAULT_JAVASCRIPT_CONTENT_TYPE);
out.print(callback + "(" + backContent + ");");
} else {
out.print(backContent);
}
}
public String getContentType() {
return contentType == null ? DEFAULT_CONTENT_TYPE : contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public String getCallbackContentType() {
return callbackContentType == null ? DEFAULT_JAVASCRIPT_CONTENT_TYPE : callbackContentType ;
}
public void setCallbackContentType(String callbackContentType) {
this.callbackContentType = callbackContentType;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
}
后台使用的是webx 其余框架同理。跨域
java解决跨域 多个号_java-解决跨域问题相关推荐
- java怎么录入4位会员号_java会员信息录入 需求说明: 录入会员信息 判断录入的会员号是否合法...
packagestudy;importjava.util.Scanner;/**练习4--会员信息录入*需求说明:*录入会员信息*判断录入的会员号是否合法*/publicclassLian2{stat ...
- 【AD】取消普通域用户帐号加域权限授权特定普通域用户加域权限
通常来说,没有做什么特别的设定的话,都是手动加域,且使用的是管理员帐号,这种情况下是有风险的,容易被人记忆密码.所以,如果可以设置一个普通用户帐号,专门用来执行加域操作,就会降低此类风险.其实默认情况 ...
- oracle错误号大全(查询ora错误号以及解决方法技巧)
oracle 查询ora错误号以及解决方法技巧 racle 错误号以及解决方法技巧 经常有朋友问我ORACLE 类似ora-00109 错误的信息,其实我们的ORACLE系统本身已经为我们详细的说明了 ...
- Nginx完美解决前后端分离端口号不同导致的跨域问题
Nginx完美解决前后端分离端口号不同导致的跨域问题 参考文章: (1)Nginx完美解决前后端分离端口号不同导致的跨域问题 (2)https://www.cnblogs.com/PyKK2019/p ...
- java单点登录跨域_深入浅出让你理解跨域与SSO单点登录原理与技术
原标题:深入浅出让你理解跨域与SSO单点登录原理与技术 一:SSO体系结构 SSO SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互 ...
- 详解vue项目和普通项目如何解决开发环境与生产环境下的跨域问题
概念: 什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制.所谓同源是指,域名,协议,端口均相同. http://www ...
- nginx解决浏览器跨域问题_使用nginx解决浏览器跨域
什么是浏览器跨域? 跨域就是指浏览器具有同源策略,浏览器不会执行访问其它网址数据的js脚本,比如说访问其它网址的cookie数据,调用其它网址的api接口. 什么是同源? 协议,域名,端口均相同的情况 ...
- 【跨域】一篇文章彻底解决跨域设置cookie问题!
一篇文章彻底解决跨域设置cookie问题! 大家好我是雪人~~⛄ 之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用. 是因为谷歌浏览器新版本Chrome 80将Cookie ...
- 跨域与jsonp及cors解决
1. 什么是跨域? 跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘.具体概念如下:只要协议.域名.端口有任何一个不同,都被当作是不同的域.之所以会产生跨域这个问题呢,其实也很容 ...
最新文章
- Zeal编程查询,离线文档浏览器
- python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例
- BZOJ2442: [Usaco2011 Open]修剪草坪 单调队列优化dp
- Linux下的lua和boost c++的搭建和安装
- CVPR2021|引入记忆模块,突破长距离依赖视频预测的性能瓶颈
- Ajax技术原理小结
- PL/SQL异常处理
- 【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
- BRVAH(让RecyclerView变得更高效) (3)
- matlab2014b linux,matlab 2014b linux 肿么安装
- 首都机场t2长期停车收费,首都机场t2停车场过夜价格表
- linux中安装无线网卡驱动,在linux下安装无线网卡驱动
- uml通信图画法_UML各种图画法总结
- python调用java的方法-JPype的简单使用
- ABB工业机器人程序编写与实战
- (十七)关于安装智能家居3大方面你需要注意的
- 一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
- 词语语义的相关关系和相似关系量化
- 全球都在乘“云”而上,从十几亿暴涨至千亿规模的云计算究竟是什么来头?
- 使用memmove/memcpy库函数拷贝内存时容易产生的异常
热门文章
- 一个as3开发人员的话
- 电脑开机出现英文“ERROR:System fan has failed”的错误提示
- Failed to start Zabbix Agent.
- 根据一览,自动生成Sheet页
- 【Python-2.7】大小写转换函数
- 【Oracle】手工建库
- Android 微信分享后留在微信,没有回调的问题解决方案
- ImportError: No module named ‘BaseHTTPServer‘:解决方案
- WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障
- 解决问题的能力 > 10倍程序员