今天刚在项目中解决了跨域,记录下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-解决跨域问题相关推荐

  1. java怎么录入4位会员号_java会员信息录入 需求说明: 录入会员信息 判断录入的会员号是否合法...

    packagestudy;importjava.util.Scanner;/**练习4--会员信息录入*需求说明:*录入会员信息*判断录入的会员号是否合法*/publicclassLian2{stat ...

  2. 【AD】取消普通域用户帐号加域权限授权特定普通域用户加域权限

    通常来说,没有做什么特别的设定的话,都是手动加域,且使用的是管理员帐号,这种情况下是有风险的,容易被人记忆密码.所以,如果可以设置一个普通用户帐号,专门用来执行加域操作,就会降低此类风险.其实默认情况 ...

  3. oracle错误号大全(查询ora错误号以及解决方法技巧)

    oracle 查询ora错误号以及解决方法技巧 racle 错误号以及解决方法技巧 经常有朋友问我ORACLE 类似ora-00109 错误的信息,其实我们的ORACLE系统本身已经为我们详细的说明了 ...

  4. Nginx完美解决前后端分离端口号不同导致的跨域问题

    Nginx完美解决前后端分离端口号不同导致的跨域问题 参考文章: (1)Nginx完美解决前后端分离端口号不同导致的跨域问题 (2)https://www.cnblogs.com/PyKK2019/p ...

  5. java单点登录跨域_深入浅出让你理解跨域与SSO单点登录原理与技术

    原标题:深入浅出让你理解跨域与SSO单点登录原理与技术 一:SSO体系结构 SSO SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互 ...

  6. 详解vue项目和普通项目如何解决开发环境与生产环境下的跨域问题

    概念: 什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制.所谓同源是指,域名,协议,端口均相同. http://www ...

  7. nginx解决浏览器跨域问题_使用nginx解决浏览器跨域

    什么是浏览器跨域? 跨域就是指浏览器具有同源策略,浏览器不会执行访问其它网址数据的js脚本,比如说访问其它网址的cookie数据,调用其它网址的api接口. 什么是同源? 协议,域名,端口均相同的情况 ...

  8. 【跨域】一篇文章彻底解决跨域设置cookie问题!

    一篇文章彻底解决跨域设置cookie问题! 大家好我是雪人~~⛄ 之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用. 是因为谷歌浏览器新版本Chrome 80将Cookie ...

  9. 跨域与jsonp及cors解决

    1. 什么是跨域? 跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘.具体概念如下:只要协议.域名.端口有任何一个不同,都被当作是不同的域.之所以会产生跨域这个问题呢,其实也很容 ...

最新文章

  1. Zeal编程查询,离线文档浏览器
  2. python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例
  3. BZOJ2442: [Usaco2011 Open]修剪草坪 单调队列优化dp
  4. Linux下的lua和boost c++的搭建和安装
  5. CVPR2021|引入记忆模块,突破长距离依赖视频预测的性能瓶颈
  6. Ajax技术原理小结
  7. PL/SQL异常处理
  8. 【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
  9. BRVAH(让RecyclerView变得更高效) (3)
  10. matlab2014b linux,matlab 2014b linux 肿么安装
  11. 首都机场t2长期停车收费,首都机场t2停车场过夜价格表
  12. linux中安装无线网卡驱动,在linux下安装无线网卡驱动
  13. uml通信图画法_UML各种图画法总结
  14. python调用java的方法-JPype的简单使用
  15. ABB工业机器人程序编写与实战
  16. (十七)关于安装智能家居3大方面你需要注意的
  17. 一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
  18. 词语语义的相关关系和相似关系量化
  19. 全球都在乘“云”而上,从十几亿暴涨至千亿规模的云计算究竟是什么来头?
  20. 使用memmove/memcpy库函数拷贝内存时容易产生的异常

热门文章

  1. 一个as3开发人员的话
  2. 电脑开机出现英文“ERROR:System fan has failed”的错误提示
  3. Failed to start Zabbix Agent.
  4. 根据一览,自动生成Sheet页
  5. 【Python-2.7】大小写转换函数
  6. 【Oracle】手工建库
  7. Android 微信分享后留在微信,没有回调的问题解决方案
  8. ImportError: No module named ‘BaseHTTPServer‘:解决方案
  9. WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障
  10. 解决问题的能力 > 10倍程序员