Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示

XMLHttpRequest cannot oad http://xxxxxx. Origin http://xxxxxx is not allowed by Access-Control-Allow-Origin.

这是Ajax跨域访问权限的问题,服务器端不接受来自另一个不同IP地址的由脚本文件发出的http请求。解决这个问题需要在服务器端进行配置使服务器端可以接受来自不同域的脚本文件的http请求。一个简单的解决方法是在服务器端配置Jetty Cross Origin Filter。

首先你需要下载jetty-servlets.jar。下载地址http://central.maven.org/maven2/org/eclipse/jetty/jetty-servlets/ 。然后将jetty-servlets.jar导入到WEB-INF/lib文件夹。最后在web.xml文件配置一些简单的参数就可以使服务器端允许跨域访问。一个典型的配置是这样的:

 1 <web-app>
 2
 3     <filter>
 4
 5         <filter-name>cross-origin</filter-name>
 6
 7         <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
 8
 9         <init-param>
10
11             <param-name>allowedOrigins</param-name>
12
13             <param-value>*</param-value>
14
15         </init-param>
16
17         <init-param>
18
19             <param-name>allowedMethods</param-name>
20
21             <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value>
22
23         </init-param>
24
25         <init-param>
26
27             <param-name>allowCredentials</param-name>
28
29             <param-value>true</param-value>
30
31         </init-param>
32
33         <init-param>
34
35             <param-name>allowCredentials</param-name>
36
37             <param-value>true</param-value>
38
39         </init-param>
40
41     </filter>
42
43     <filter-mapping>
44
45         <filter-name>cross-origin</filter-name>
46
47         <url-pattern>/rest/*</url-pattern>
48
49     </filter-mapping>
50
51 </web-app>

Jetty Cross Origin配置方法

接下来解释参数的具体意义:

allowedOrigins: 允许跨域访问的域名或链接地址,多个地址用逗号分隔,默认值为"*", 表示接受来自所有域的访问请求。

allowedMethods: 可接受的http请求方法,多个方法用逗号分隔,默认为GET, PSOT, HEAD.

allowCredentials: 是否允许受信任的请求访问资源,默认为true。

有关其他详细配置可以参考官方文档:

http://www.eclipse.org/jetty/documentation/current/cross-origin-filter.html

时间: 2024-08-02 02:47:28

Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法的相关文章

jquery ajax跨域访问webservice配置

1.webservice方法 [System.Web.Script.Services.ScriptService] public class TestService : System.Web.Services.WebService { [WebMethod] public string Test(string inputStr) { ////HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", &qu

解决jQuery ajax跨域问题,Google、IE、Firefox亲测有效

直接上最后的结果吧 JS: 1 $.ajax({ 2 type: "GET", 3 async: false, 4 crossDomain: true, 5 url: "www.test.com/TestHandler.ashx", 6 data: { Id: "1"}, 7 dataType: "jsonp", 8 jsonp: "callback", 9 jsonpCallback: "cal

jquery ajax 跨域访问例子

<script type="text/javascript"> $(function(){ $.ajax({ cache : false, type : "GET", dataType : "jsonp",//数据类型为jsonp url : "xxx?gameId=1028&mac=11754868939823&startDate=2014-12-01&endDate=2014-12-03"

29 Jquery Ajax跨域访问

原文地址:https://www.cnblogs.com/springsnow/p/9461758.html

Jquery Ajax 跨域调用asmx类型 WebService范例

摘要:Ajax 在 Web 2.0 时代起着非常重要的作用,然而有时因为同源策略(SOP)(俗称:跨域问题(cross domain)) 它的作用会受到限制.在本文中,将学习如何克服合作限制.本文以asmx方式搭建webservice作为测试用后端,给出完整的前后端调用解决方案.范例代码. 关键词: jquery ajax 跨域  webservice  asmx  cross-domain 0 问题分析 0.1 什么是跨域问题? 越来越多的网站需要相互协作.例如,在线房屋租赁网站需要谷歌地图的

NodeJ node.js Jquery Ajax 跨域请求

Jquery + Ajax 跨域请求 说白了就是前台请求ajax数据(JSON)但是请求的数据不在本地的绝对路径下,接口数据 是没有这个安全性的我对外公开的接口数据,只要你找到接口你就可以使用里面的数据 ,但是在浏览器端他做了一套机制就是 不让你随意的访问别人服务器的外来接口,如果是好的数据的化  你可以学习使用,如果是一些恶意数据,对服务器对个人来说都是没有安全性的,目前明白一点就是 阻止跨域请求就是 浏览器的原因,也算是ajax的原因,所以这个前台你是无能为力的. 解决办法: 服务器端进行权

jquery ajax跨域请求webservice webconfig配置

jquery ajax跨域请求webservice web.config配置 <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <webServices> <protocols> <add name="HttpGet"/> <add name="Htt

Access-Control-Allow-Origin:ajax 跨域访问

在使用jquery的$.ajax跨域访问的时候,如客户端域名是www.test.com,而服务器端是www.test2.com,在客户端通过ajax访问服务器端的资源将会报跨域错误: XMLHttpRequest cannot load http://www.test2.com/test.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://www.test

CXF发布支持ajax跨域访问的restful webservice

用apache cxf构建了一个玩具型restful webservice,内嵌jetty,加上gradle,发布无比轻松. apply plugin: 'java' apply plugin: 'application' repositories { maven { url "http://maven.oschina.net/content/groups/public" } } [compileJava,compileTestJava,javadoc]*.options*.encod