js跨域访问资源

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配置

时间: 2024-11-10 13:11:48

js跨域访问资源的相关文章

三种方法实现js跨域访问

javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法: 1.基于iframe实现跨域 基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实

js跨域访问

客户端 HTML 1 <div id="oid"></div> 2 <script type="text/javascript"> 3 //获取货号 4 $.ajax({ 5 6 url: "http://192.168.1.191/H.ashx", 7 type: "GET", 8 dataType: 'jsonp', 9 //jsonp的值自定义,如果使用jsoncallback,那么服

js跨域访问,No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource

js跨域访问提示错误:XMLHttpRequest cannot load http://...... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 解决方法: 1.如果请求的url是aspx页面,则需要在aspx页面中添加代码:Response.AddHeader("Access-Contro

js跨域访问问题

1.什么是跨域访问 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域.如果进行跨域访问,浏览器会报跨域访问异常 NO 'Access Control-Allow-Origin' ....CORS:Cross-orign resource sharing跨域分享资源 总之,当前页面你发送请求时只要协议.域名.端口号有一个与当前页面不一

【Todo】JS跨域访问问题的解决

做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html 方案1: 在js中,我们虽然不能直接用XMLHttpRequest请求不同域上的数据时,但是在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. jquery的jsonp形式: 服务器端如下: protected void Page_Load(object sende

解决Js跨域访问的问题

用Js获取Html标签<input type="file"/>的路径!遇到代码拒绝访问,提示安全验证,不允许跨域访问,简单的设置一下浏览器即可,不过对于不知道的朋友们遇到这种情况也是够发愁的.

java 访问 太平洋网ip接口,解决前端js 跨域访问失败问题

前端 js访问太平洋网IP接口地址,返回结果是403 服务器拒绝处理异常, 于是,想到了使用 服务器端访问,然后再将查询结果返回的前端 这是Java的测试源码,[具体的contronller端源码懒得写,其实基本一样]: 1 public class GetLocationByIP { 2 @Test 3 public void IpUtils(){ 4 String ip = "223.73.101.129"; 5 System.out.println(SendGET(ip)); 6

利用cors,实现js跨域访问Tomcat下资源

第一步:页面js代码: function createCORSRequest(method, url){ var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr){ xhr.open(method, url, true); } else if (typeof XDomainRequest != "undefined"){ xhr = new XDomainRequest(); xhr.open(met

js 跨域访问

错误log : XMLHttpRequest cannot load http://192.168.17.131:8080/wm/topology/links/json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1' is therefore not allowed access. 最简单的解决办法是: 在chrome中添加插件: (h