码迷,mamicode.com
首页 > Web开发 > 详细

js跨域访问资源

时间:2017-12-12 17:44:03      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:throw   path   contex   def   get   webapp   情况   blog   post   

js访问资源默认情况下采用同源策略

同源:域名,端口相同

localhost与ip地址都不是同源

ajax跨域比较严格:子域名,相同域名及端口不同都是跨域
火狐ajax跨域不会自动带上cookie

如要跨域需作相应的设置(多种方案):

一、
容器层面,影响范围是容器下的所有webapp应用
in tomcat/conf/web.xml ex:
<filter>      <filter-name>CorsFilter</filter-name>   <filter-class>org.apache.catalina.filters.CorsFilter</filter-class></filter><filter-mapping>   <filter-name>CorsFilter</filter-name>   <url-pattern>/*</url-pattern></filter-mapping>
:这个过滤器只针对apache-tomcat-7.0.41及以上版本。
二、
单个应用,只作用于这个项目本身
in webapp/WEB-INF/web.xml<filter>   <filter-name>CorsFilter</filter-name>   <filter-class>org.apache.catalina.filters.CorsFilter</filter-class></filter><filter-mapping>   <filter-name>CorsFilter</filter-name>   <url-pattern>/*</url-pattern></filter-mapping>
三、
指定Filter过滤的全部请求资源

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
HttpServletRequest req = (HttpServletRequest) request;   
HttpServletResponse res = (HttpServletResponse) response;   
res.addHeader("Access-Control-Allow-Origin", "*");   
res.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");   
res.addHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires,   Content-Type, X-E4M-With");   
chain.doFilter(req, res);
}

四、

maven-Archetype-wepapp提供两种支持
tomcat7-maven-plugin
<plugin>   
     <groupId>org.apache.tomcat.maven</groupId>   
     <artifactId>tomcat7-maven-plugin</artifactId>  
    <version>2.2</version>   
    <configuration>     
           <path>/servletdemo</path>     
          <port>8082</port>     
          <server>tomcat</server>     
           <url>http://localhost:8080/manager/text</url>   
          <!-- Enable CORS -->   
          <tomcatWebXml>src/test/resources/tomcat.web.xml</tomcatWebXml>   
    </configuration>
</plugin>
jetty-maven-plugin
<plugin>   
           <groupId>org.eclipse.jetty</groupId>   
           <artifactId>jetty-maven-plugin</artifactId>   
           <version>9.3.2.v20150730</version>   
      <configuration>     
                    <scanIntervalSeconds>10</scanIntervalSeconds>   
                    <webApp>     
                            <contextPath>/servletdemo</contextPath>     
                          <!--Fix file locking problem with jettyrun Enable CORS-->    
                         <defaultsDescriptor>src/test/resources/jetty.web.xml</defaultsDescriptor>   
                      </webApp>   
                    <httpConnector>     
                          <!-- mvn -Djetty.port=8082 jetty:run -->     
                          <port>8082</port>   
                   </httpConnector>   
      </configuration>
<dependencies>
<dependency>   
<groupId>org.eclipse.jetty</groupId>   
<artifactId>jetty-servlets</artifactId>   
<version>9.3.2.v20150730</version>   
</dependency>
</dependencies>
</plugin>
五、
框架配置
如springmvc支持注解及xml配置
 

js跨域访问资源

标签:throw   path   contex   def   get   webapp   情况   blog   post   

原文地址:http://www.cnblogs.com/cghhnty/p/8028432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!