CORS - Использование AJAX для публикации в веб-сервисе Python (webapp2)
Это будет долго:
Итак, я разрабатываю гаджет календаря Google, который отправляет запросы в API-интерфейс REST Python webapp2, размещенный на Google App Engine.
Проблема возникает, когда я пытаюсь POST что-то, что не позволяет мне из-за CORS. В Chromes 'DevTools это говорит:
Method: OPTIONS.
Status: (failed) Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
Origin https://hq34i4geprnp5vci191ljfuhcoerscl4-a-calendar-opensocial.googleusercontent.com is not allowed by Access-Control-Allow-Origin.
Я знаю, что это из-за CORS. Вот:
Ajax - «Локальный хост Origin не разрешен Access-Control-Allow-Origin»
Это говорит о том, что я должен добавить
Access-Control-Allow-Origin: *
Для заголовков, но опять же я новичок в ajax, и мне интересно, если это сделано так:
$.ajax({
type: "POST",
url: "https://myapp.appspot.com/service",
contentType: "application/json; charset=utf-8",
data: data,
beforeSend: function (request)
{
request.setRequestHeader("Access-Control-Allow-Origin", "*");
}
success: function(data) {
alert("AJAX done");
}
});
При добавлении этих заголовков выводразные (что заставляет меня задуматься о том, разрешено ли происхождение, хотя на самом деле я не знаю):
Method: OPTIONS.
Status: (failed) Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
XMLHttpRequest cannot load https://myapp.appspot.com/service. Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers.
Я даже нашел это:
http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
Что позволяет мне делать запросы GET, но я бы хотел научиться делать их без этого.
Также на моем веб-сервере у меня есть это:
...
class webService(webapp2.RequestHandler):
options(self):
self.response.write('options')
post(self):
self.response.write('post')
application = webapp2.WSGIApplication([
('/', MainPage),
('/service', webService)
], debug=True)
Я не знаю, должен ли я добавить что-то еще на веб-сервер, и я не нашел информации о том, что должен это делать. Также я думаю, что я близок к тому, чтобы выполнить запрос CORS, но я не могу найти Пример, который объясняет все это.
Пожалуйста помоги.