zoukankan      html  css  js  c++  java
  • 跨域请求解决方法(JSONP, CORS)

    1、跨域

    假设我们页面或者应用部署在 http://www.aaa.com 上了,而我们打算从 http://www.bbb.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,"跨域"也就以此由来。
     
    这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),项目开发不可避免的需要进行跨域操作,它是前端工程师的基本功之一。
     
    大多数跨域的解决方案一样都是JSONP,但是它只支持GET。如果需要改成支持POST,因为传输的数据量比较大,GET形式搞不定。这就需要CORS(跨域资源共享,Cross-Origin Resource Sharing
     
    2、jsonp:就是将返回的json数据放到一个回调方法里,只支持GET
     
    客户端:get是后面加上www.bbb.com/11?callback=xxx
     
    服务端:返回的数据:jsonpcallback({"Email":"zhww@outlook.com","Remark":"我来自遥远的东方"})就是合法的js语句
     
    3、cors:
     
    客户端:需要发送请求的浏览器支持cors,代码:
     
    var data = {name:"a",password:"bb",email:"cc@cc.cc",birthday:"1980-01-23"};
    
     $.ajax({
       url: 'http://127.0.0.1:8080/RestEasy_04/User',
       type: 'POST',
       contentType : 'application/json',
       dataType: "json",
       data: JSON.stringify(data),
       success: function(){
         console.log(arguments);
       },
       error: function(){
         console.log('error')
       }
     });
     
    服务端:返回的时添加头 Access-Control-Allow-Origin
     
    为了防止XSS攻击我们的服务器,也可以设置指定的域名,如只允许来自域名 http://www.aaa.com 的请求:
     
    Access-Control-Allow-Origin: http://www.aaa.com
     
    4、java的cors解决方法:CORS Filter

    使用Maven添加cors-filter,pom.xml

    <dependency>
        <groupId>com.thetransactioncompany</groupId>
        <artifactId>cors-filter</artifactId>
        <version>2.1.2</version>
    </dependency>

    使用

    web.xml添加过滤器:

    <filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    </filter>

    为单独的servlet应用过滤如下:

    <filter-mapping>
            <filter-name>CORS</filter-name>
            <servlet-name>MyServlet</servlet-name>
    </filter-mapping>

    为指定路径应用过滤如下:

    <filter-mapping>
            <filter-name>CORS</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>

    另附下载地址:http://software.dzhuvinov.com/cors-filter.html

    使用方法:http://software.dzhuvinov.com/cors-filter-installation.html 

  • 相关阅读:
    无线鼠标换电池了
    Jython Interactive Servlet Console YOU WILL NEVER KNOW IT EXECLLENT!!! GOOD
    Accessing Jython from Java Without Using jythonc
    jython podcast cool isnt't it?
    Python里pycurl使用记录
    Creating an Interactive JRuby Console for the Eclipse Environment
    微软为AJAX和jQuery类库提供CDN服务
    Download A File Using Cygwin and cURL
    What is JMRI?这个是做什么用的,我真没看懂但看着又很强大
    用curl 发送指定的大cookie的http/https request
  • 原文地址:https://www.cnblogs.com/lxsky/p/4040018.html
Copyright © 2011-2022 走看看