Tomcat”;访问控制允许起源”;和JavaScript
Tomcat "Access-Control-Allow-Origin" and JavaScript
我的服务器上的CORS有一个巨大的问题。我的服务器在localhost上的Tomcat上运行。我实现的服务器有几个RestFul资源。例如:
@Path("user")
public class UserService {
@GET
@Path("/{username}/{password}")
@Produces("text/plain")
public String checkLoginParameter(@PathParam("username") String username, @PathParam("password") String password) {
String tempUserName = "";
String tempPassword = "";
String bool = "";
EntityManager em = createEntityManager();
try{
User user = (User)em.createQuery("SELECT u FROM User u WHERE u.username='"+username+"' AND u.password='"+password+"'").getSingleResult();
tempUserName = user.getUsername();
tempPassword = user.getPassword();
}
catch(Exception e){}
if(username.equals(tempUserName) && !username.isEmpty() && password.equals(tempPassword) && !password.isEmpty()){
bool = "true";
}
else{
bool = "false";
}
return bool;
}
}
资源正在工作。现在我想通过JavaScript从另一个网站访问资源。当我尝试这样做时,我会收到一条错误消息:
XMLHttpRequest cannot load http://localhost:8080/RSAppStore/user/poc/poc. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我知道我已经向我的服务器添加了CORS权限。我是这样做的:
web.xml:
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
使用JavaScript访问:
<script type="text/javascript">
$(function(){
$.ajax({
type: "GET",
crossDomain: true,
url: "http://robosmart-appstore:robosmart@localhost:8080/RSAppStore/user/poc/poc",
contentType: "text/plain",
success: function( string ) {
console.log(string);
},
error:function () {
console.log("err");
}
});
});
</script>
此外,我还添加了这两个罐子。
cors-filter-1.9.2.jar
java-property-utils-1.9.jar
我在网上读了很多例子和解释,但似乎什么都不起作用,我不知道自己做错了什么。
我刚刚用tomcat和angular.js.成功通过CORS
您可能需要配置以下内容:
-
将cors.supportedHeaders更改为:
<init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value> </init-param>
-
确保你的过滤器在任何其他过滤器之前。
-
尝试将contentType更改为:
contentType: "application/x-www-form-urlencoded; charset=utf-8"
试试看,伙计。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 在JavaScript中查找自己的起源
- 如何跟踪一个javascript行为的起源,特别是-添加哈希到我的url
- Google API:授权的JavaScript起源
- Javascript, Chrome扩展开发,XMLHttpRequest访问-控制-允许-起源问题
- 我怎么能找到一个Javascript事件的起源,这是程序化触发
- Tomcat”;访问控制允许起源”;和JavaScript