精华内容
下载资源
问答
  • java 跨域访问

    2012-05-21 19:01:02
    张三在aa这里面某个页面,点击一个"http://172.16.1.2:8080/bb/cc.do?xx=ff"这样一个链接,没有跳转成功,看了bb里面的日志,说是在session里面找不到zhangs这个user,我该怎么实现呢,我的想法,应该是能够访问的呀...
  • //允许访问的头信息,*表示全部 config.setMaxAge(18000L); //预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 config.addAllowedMethod("*"); //允许提交请求的方法,*表示全部允许,也...

    package com.get;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    import org.springframework.boot.web.servlet.MultipartConfigFactory;

    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.web.bind.annotation.CrossOrigin;

    import org.springframework.web.cors.CorsConfiguration;

    import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

    import org.springframework.web.filter.CorsFilter;

    import javax.servlet.MultipartConfigElement;

    @Configuration

    @EnableZuulProxy

    @EnableEurekaClient

    @SpringBootApplicationpublic classEurekaZuulClientApplication {public static voidmain(String[] args) {

    SpringApplication.run(EurekaZuulClientApplication.class, args);

    }

    @BeanpublicCorsFilter corsFilter() {

    final UrlBasedCorsConfigurationSource source= newUrlBasedCorsConfigurationSource();

    final CorsConfiguration config= newCorsConfiguration();

    config.setAllowCredentials(true); //允许cookies跨域

    config.addAllowedOrigin("*"); //允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080 ,以降低安全风险。。

    config.addAllowedHeader("*"); //允许访问的头信息,*表示全部

    config.setMaxAge(18000L); //预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了

    config.addAllowedMethod("*"); //允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等

    config.addAllowedMethod("HEAD");

    config.addAllowedMethod("GET"); //允许Get的请求方法

    config.addAllowedMethod("PUT");

    config.addAllowedMethod("POST");

    config.addAllowedMethod("DELETE");

    config.addAllowedMethod("PATCH");

    source.registerCorsConfiguration("/**", config);return newCorsFilter(source);

    }/**

    * 文件上传配置

    *

    * @return*/@BeanpublicMultipartConfigElement multipartConfigElement() {

    MultipartConfigFactory factory= newMultipartConfigFactory();//单个数据大小

    factory.setMaxFileSize("10240KB"); //KB,MB

    ///总上传数据大小

    factory.setMaxRequestSize("102400KB");returnfactory.createMultipartConfig();

    }

    }

    展开全文
  • JSONP(JSON with Padding)是JSON的 一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通。目前了解到...

    本人为初学,如有问题,请指出,谢谢!

    使用jsonp跨域获取json数据。Ajax获取JAVA服务器json数据。

    JSONP(JSON with Padding)是JSON的 一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

    由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通。

    目前了解到的解决方法:

    解决方法一:使用协议,开启CORS,支持跨域访问

    在Servlet 中代码:

    1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {2 response.setHeader("Access-Control-Allow-Origin", "*");//开启CORS,支持跨域访问

    3 response.setContentType("text/plain");4 //TODO

    5 String callbackFunName = request.getParameter("callback");//接收回调函数名

    6 String json = "{\"records\":[{\"Name\":\"Alfreds Futterkiste\",\"City\":\"Berlin\",\"Country\":\"Germany\"},{\"Name\":\"Ana Trujillo Emparedados y helados\",\"City\":\"México D.F.\",\"Country\":\"Mexico\"}]}";7 String callbackJson = callbackFunName + "(" + json + ");";8

    9 //输出

    10 System.out.println(callbackJson);//输出调试

    11 PrintWriter out =response.getWriter();12 out.print(callbackJson);13 out.flush();14 out.close();15 }

    HTML代码:

    Jquery.Ajax 或 Jquery.getJSON

    1 $(function(){2 //$.ajax

    3 $.ajax({4 type:"get",5 async:false,6 url:"http://localhost:8080/AjaxServlet?callback=?",7 datatype:"jsonp",8 success:function(data){9 alert("success: " +data);10 },11 error:function(err){12 alert("failed");13 }14 });15 //$.getJSON

    16 $.getJSON("http://localhost:8080/AjaxServlet?callback=?",function(result){17 console.log(result);18 });19 });

    AngulgrJs的$http.jsonp

    1

    2

    3

    4

    5

    循环对象:

    6

    7

    8 {{ x.Name + ', ' + x.Country }}9

    10

    11

    12

    展开全文
  • 原文:一、CORS概述跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明那些来源可以通过浏览器访问该服务器上的各类资源(包括CSS、图片、JavaScript 脚本以及其它类资源)。另外,对那些会对服务器数据造成破坏...

    原文:

    一、CORS概述

    跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明那些来源可以通过浏览器访问该服务器上的各类资源(包括CSS、图片、JavaScript 脚本以及其它类资源)。另外,对那些会对服务器数据造成破坏性影响的 HTTP 请求方法(特别是 GET 以外的 HTTP 方法,或者搭配某些MIME类型的POST请求),标准强烈要求浏览器必须先以 OPTIONS 请求方式发送一个预请求(preflight request),从而获知服务器端对跨源请求所支持 HTTP 方法。在确认服务器允许该跨源请求的情况下,以实际的 HTTP 请求方法发送那个真正的请求。服务器端也可以通知客户端,是不是需要随同请求一起发送信用信息(包括 Cookies 和 HTTP 认证相关数据)。

    二、CORS原理

    例如:域名A(http://a.example)的某 Web 应用程序中通过标签引入了域名B(http://b.foo)站点的某图片资源(http://b.foo/image.jpg)。这就是一个跨域请求,请求http报头包含Origin: http://a.example,如果返回的http报头包含响应头 Access-Control-Allow-Origin: http://a.example (或者Access-Control-Allow-Origin: http://a.example),表示域名B接受域名B下的请求,那么这个图片就运行被加载。否则表示拒绝接受请求。

    三、CORS跨域请求控制方法

    1.http请求头

    Origin: 普通的HTTP请求也会带有,在CORS中专门作为Origin信息供后端比对,表明来源域。

    Access-Control-Request-Method: 接下来请求的方法,例如PUT, DELETE等等

    Access-Control-Request-Headers: 自定义的头部,所有用setRequestHeader方法设置的头部都将会以逗号隔开的形式包含在这个头中

    2.http响应头

    然后浏览器再根据服务器的返回值判断是否发送非简单请求。简单请求前面讲过是直接发送,只是多加一个origin字段表明跨域请求的来源。然后服务器处理完请求之后,会再返回结果中加上如下控制字段

    Access-Control-Allow-Origin: 允许跨域访问的域,可以是一个域的列表,也可以是通配符"*"。这里要注意Origin规则只对域名有效,并不会对子目录有效。即http://foo.example/subdir/ 是无效的。但是不同子域名需要分开设置,这里的规则可以参照同源策略

    Access-Control-Allow-Credentials: 是否允许请求带有验证信息,

    Access-Control-Expose-Headers: 允许脚本访问的返回头,请求成功后,脚本可以在

    Access-Control-Max-Age: 缓存此次请求的秒数。在这个时间范围内,所有同类型的请求都将不再发送预检请求而是直接使用此次返回的头作为判断依据,非常有用,大幅优化请求次数

    Access-Control-Allow-Methods: 允许使用的请求方法,以逗号隔开

    Access-Control-Allow-Headers: 允许自定义的头部,以逗号隔开,大小写不敏感

    如果程序猿偷懒将Access-Control-Allow-Origin设置为:Access-Control-Allow-Origin: * 允许任何来自任意域的跨域请求,那么久存在被 DDoS攻击的可能。

    实现方式:

    1、nginx配置文件配置:

    server {

    location / {

    if ($request_method = 'OPTIONS') {

    add_header 'Access-Control-Allow-Origin' *;

    add_header 'Access-Control-Allow-Credentials' 'true';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

    add_header 'Access-Control-Max-Age' 3600;

    add_header 'Content-Type' 'application/json;charset=UTF-8';

    add_header 'Content-Length' 0;

    return 200;

    }

    if ($request_method = 'GET') {

    add_header 'Access-Control-Allow-Origin' *;

    add_header 'Access-Control-Allow-Credentials' 'true';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

    add_header 'Access-Control-Max-Age' 0;

    #add_header 'Content-Type' 'application/json;charset=UTF-8';

    add_header 'XDomainRequestAllowed' '1';

    }

    if ($request_method = 'POST') {

    add_header 'Access-Control-Allow-Origin' *;

    add_header 'Access-Control-Allow-Credentials' 'true';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

    add_header 'Access-Control-Max-Age' 0;

    #add_header 'Content-Type' 'application/json;charset=UTF-8';

    add_header 'XDomainRequestAllowed' '1';

    }

    }

    以上是根据具体的  POST、PUT、GET等方式的配置:

    还可以直接在 server节点下直接配置:

    add_header 'Access-Control-Allow-Origin' '*';   就是最简单的配置

    方法2:直接在tomcat安装目录下的lib中添加cors-filter-1.7.jar,java-property-utils-1.9.jar 这2个jar包,并且在业务项目的web.xml 中配置想要应的filter配置文件:

    CORS

    com.thetransactioncompany.cors.CORSFilter

    cors.allowOrigin

    *

    cors.supportedMethods

    GET,POST,HEAD,PUT,DELETE

    cors.supportedHeaders

    Accept,Origin,X-Requested-With,Content-Type,Last-Modified

    cors.exposedHeaders

    Set-Cookie

    cors.supportsCredentials

    true

    CORS

    /*

    方法3:自己写的  filter类,自己在在业务项目中配置web.xml 中配置想要的xml 文件。

    如:java类filter:

    public class CorsFilter implements Filter{

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    // TODO Auto-generated method stub

    }

    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,

    ServletException {

    // TODO Auto-generated method stub

    HttpServletResponse res = (HttpServletResponse) response;

    res.setContentType("text/html;charset=UTF-8");

    res.setHeader("Access-Control-Allow-Origin", "*");

    res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

    res.setHeader("Access-Control-Max-Age", "0");

    res.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");

    res.setHeader("Access-Control-Allow-Credentials", "true");

    res.setHeader("XDomainRequestAllowed","1");

    chain.doFilter(request, response);

    }

    @Override

    public void destroy() {

    // TODO Auto-generated method stub

    }

    }

    业务项目中的web.xml配置如下:

    cors

    com.tianlong.common.base.CorsFilter

    cors

    /*

    展开全文
  • java 跨域访问问题解决 服务器端解决 Servlet服务器端: 给response的setHeader方法中设置Access-Control-Allow-Origin 的值为 * ,eg: response.setHeader("Access-Control-Allow-Origin", "*");...

    java 跨域访问问题解决


    服务器端解决



    Servlet服务器端:

    给response的setHeader方法中设置Access-Control-Allow-Origin 的值为 * ,eg: response.setHeader("Access-Control-Allow-Origin", "*");星号是允许所有的其他域名访问,也可设置为指定域名:

    设置:


    结果:



    struts服务器端:



    展开全文
  • Java跨域访问外网

    2020-06-15 11:41:02
    java跨域访问 第一步:导入依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5</version> <...
  • 在web.xml文件中加入以下内容:CorsFiltercn.iqoo.api.filter.CorsFilterCorsFilter/*即可支持js的跨域请求了.第二/** @Project_Name: iqoo-parent* @File_Name: CorsFilter* @Package_Name: cn.iqoo.api.filter* @...
  • java跨域访问问题记录

    2017-09-11 15:51:00
    跨域访问记录 package com.alphasta.zsbs.servlet; import java.io.BufferedReader;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.net.URLDecoder;import java...
  • java解决请求跨域问题,有以下两种写法1.使用拦截器,实现javax.servlet.Filter接口import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet....
  • java解决请求跨域问题,有以下两种写法1.使用拦截器,实现javax.servlet.Filter接口import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet....
  • java跨域访问,上传文件

    千次阅读 2017-07-26 15:45:50
    例如a.123.com\b.123.com如果a想调用b的接口跨域请求,如果一级域名不同,均属于跨域请求(我这样理解)在跨域请求中,如果是js端控制的,使用jsonp的ajax调用,我主要想说一下在服务端后台java代码中跨域调用的实现。...
  • 访问 www.baidu.com/a 走A 项目同 http://a.baidu.com:8080/ 访问 www.baidu.com/b 走B 项目同 http://b.baidu.com:8081/ 两个项目都在同一个域名下 www.baidu.com,不会存在跨域问题 server { listen 80; ...
  • Java跨域访问sessionid不一致问题处理

    千次阅读 2019-05-04 23:39:53
    导语:直接上处理方法,具体原理请自行查阅资料.(共用两种方法解决) 常见情景:设置进session中...设置可以支持跨域请求: response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); ...
  • 写在前面  js跨域的解决方案有多种,其中最常见的是使用同一服务器下的代理来获取远端数据,再通过js进行读取,而在这... 简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同
  • AjaxJSON页面上直接跨域访问会遇到诸多问题:无法正常访问以及无法正常获取返回值等可通过Ajax方式呼叫后台程式,交由java.net去呼叫跨域地址,解决此问题以下為部分程式:import java.net.URL;import java.net....
  • import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;impo...
  • 跨域问题的推荐文章:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html现在分布式的项目都涉及到跨域这个...同源直接可以互相访问相互间的资源。什么是跨域跨域,域名不同或者端口不同,协议不...
  • 实现跨域访问原理:浏览器由于同源策略不能做跨域访问,但是标签是开放策略能够跨域访问,所以突破口就是通过来实现跨域访问获得其他地方得json数据jsonp模式:JSONP(JSON with Padding)是JSON的一种”使用模式”,...
  • ps:ajax跨域请求 放弃使用POST + JSON原先写法POST + JSON,怎么试都不能访问@ResponseBody@RequestMapping(value = "/public/courseware/apply", method = RequestMethod.POST)public Object apply(@RequestBody ...
  • 当一个资源从与该资源本身所在...跨域资源共享机制允许Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。浏览器支持在 API 容器中使用 CORS,以降低跨域 HTTP 请求所带来的风险。  针对于JAVA开...
  • 一、CORS概述跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明那些来源可以通过浏览器访问该服务器上的各类资源(包括CSS、图片、JavaScript 脚本以及其它类资源)。另外,对那些会对服务器数据造成破坏性影响...
  • 一、CORS概述跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明那些来源可以通过浏览器访问该服务器上的各类资源(包括CSS、图片、JavaScript 脚本以及其它类资源)。另外,对那些会对服务器数据造成破坏性影响...
  • 方式一:注解方式// 将跨域访问的接口添加此注解, 也可放在Controller上@CrossOrigin(origins = "*", maxAge = 3600)方式二: 全局加, 在启动类中添加以下代码(效果同方式一)@Beanpublic CorsFilter corsFilter() {...
  • java web服务器实现跨域访问发布时间:2020-09-08 23:29:01来源:脚本之家阅读:87作者:poisions一、CORS概述跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明那些来源可以通过浏览器访问该服务器上的各类...
  • 要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面、JavaScript脚本、css样式,对应的协议、域名和端口完全相同,那么这两个资源就是同源的,Same-origin...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,086
精华内容 434
关键字:

java跨域访问

java 订阅