ОПЦИИ JavaScript межсайтовая отправка данных с помощью Firefox - PullRequest
1 голос
/ 21 июля 2010

У меня проблема с отправкой данных на сервер при использовании Firefox.Сервер работает на Google App Engine.

Вот что у меня есть в моем JavaScript.

$.ajax({<br> url: 'http://someurl/example/myform.json',<br> type: 'post',<br> dataType: 'json',<br> data: {<br> 'value.title': title,<br> 'value.info.first': first,<br> 'value.info.second': value<br> }, success: function(data) {<br> alert("success");<br> },<br> error: function(object, status, error) {<br> alert("error");<br> }<br> });

И на сервере у меня есть.

@RequestMapping(value = "/myform.json", method = RequestMethod.POST)<br> public ResponseEntity<String> create(@ModelAttribute("data") @Valid final Data data,<br> final BindingResult result, final HttpServletResponse resp,) {<br> //process Data }

Пока все хорошо, это работало на IE и Chrome без проблем.Но потом я обнаружил, что он не работает в Firefox, и это потому, что браузер сначала отправляет метод OPTIONS, прежде чем что-то публиковать, поэтому я продолжил и сделал следующее на своем сервере.

@RequestMapping(value = "/form.json", method = RequestMethod.OPTIONS)<br> public ResponseEntity<String> options( final HttpServletResponse resp) {<br> final HttpHeaders responseHeaders = new HttpHeaders();<br> responseHeaders.set("Access-Control-Allow-Origin", "*");<br> responseHeaders.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS");<br> responseHeaders.set("Access-Control-Allow-Headers", "Content-Type");<br> responseHeaders.set("Access-Control-Max-Age", "86400");<br> return new ResponseEntity<String>("",responseHeaders,HttpStatus.OK);<br> }

Проблема здесь в том, что это возвращает 500, и в журнале отображается предупреждение с.

`java.security.AccessControlException: доступ запрещен (java.lang.RuntimePermissionaccessDeclaredMembers)
в java.security.AccessControlContext.checkPermission (AccessControlContext.java:355)
в java.security.AccessController.checkPermission (AccessController.java:567)
в java.chemНеизвестный источник)
на com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission (CustomSecurityManager.java:45)
на java.lang.SecurityManager.checkMemberAccess (неизвестный источник)
на java.lang.Class.checkMemberAccess (неизвестный источник)
на java.lang.Class.getDeclaredMethods (неизвестный источник)

`

Есть предложения?

1 Ответ

0 голосов
/ 21 июля 2010

в вашем вызове $ .ajax, вы можете попробовать явно установить contentType, то есть:

$.ajax({
    url: 'http://someurl/example/myform.json',
    type: 'post',
    dataType: 'json',
    contentType: 'application/json',
    data: {
        'value.title': title,
        'value.info.first': first,
        'value.info.second': value
    }, complete: function() {
        alert("done");
    }
});

я знаю, что я всегда делаю это с вызовами x-site и делал это в течение достаточно долгого времени из-за типа проблемы, которую вы описываете (повторные опции должны быть сопоставлены 1-й, прежде чем вызов будет собран на сервере).

Я уверен, что это продвинет вас вперед, если не к успеху.

джим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...