【发布时间】:2010-07-21 08:34:41
【问题描述】:
我在使用 Firefox 时将帖子数据发送到服务器时遇到问题。 服务器正在 Google App Engine 上运行。
这是我的 JavaScript 中的内容。
$.ajax({
url: 'http://someurl/example/myform.json',
type: 'post',
dataType: 'json',
data: {
'value.title': title,
'value.info.first': first,
'value.info.second': value
},
success: function(data) {
alert("success");
},
error: function(object, status, error) {
alert("error");
}
});
在我拥有的服务器上。
@RequestMapping(value = "/myform.json", method = RequestMethod.POST)
public ResponseEntity<String> create(@ModelAttribute("data") @Valid final Data data,
final BindingResult result, final HttpServletResponse resp,) {
//process Data
}
到目前为止一切顺利,这在 IE 和 Chrome 上运行没有问题。 但是后来我发现它在 Firefox 上不起作用,那是因为浏览器在实际发布任何内容之前首先发送了一个 OPTIONS 方法,所以我继续在我的服务器上进行了以下操作。
@RequestMapping(value = "/form.json", method = RequestMethod.OPTIONS)
public ResponseEntity<String> options(
final HttpServletResponse resp) {
final HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("Access-Control-Allow-Origin", "*");
responseHeaders.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
responseHeaders.set("Access-Control-Allow-Headers", "Content-Type");
responseHeaders.set("Access-Control-Max-Age", "86400");
return new ResponseEntity<String>("",responseHeaders,HttpStatus.OK);
}
)
这里的问题是它返回 500 并且日志显示警告。
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:355)
at java.security.AccessController.checkPermission(AccessController.java:567)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:45)
at java.lang.SecurityManager.checkMemberAccess(Unknown Source)
at java.lang.Class.checkMemberAccess(Unknown Source)
at java.lang.Class.getDeclaredMethods(Unknown Source)
有什么建议吗?
【问题讨论】:
标签: java javascript jquery spring firefox