CORS – 使用AJAX在Python(webapp2)Web服务上发布
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CORS – 使用AJAX在Python(webapp2)Web服务上发布,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2868字,纯文字阅读大概需要5分钟。
内容图文
![CORS – 使用AJAX在Python(webapp2)Web服务上发布](/upload/InfoBanner/zyjiaocheng/702/0cd984259f9745b88bba09e81bc3f50c.jpg)
这将是很长的:
好的,我正在开发一个谷歌日历小工具,它将请求发送到托管在Google App Engine上的Python webapp2 REST api.
当我尝试发布因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 localhost is not allowed by 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请求,但是,我找不到解释这一切的示例.
请帮忙.
解决方法:
好的,我修好了.
首先,我意识到here标头是由服务器发送的,所以我在AJAX请求中发送这些标头时做错了.
最后,在搜索了全球网络后,我发现了我所缺少的内容.这是愚蠢的事情.我找到了修复它的页面:
http://enable-cors.org/server_appengine.html
所以最后一切看起来像这样:
$.ajax({
type: "POST",
url: "https://myapp.appspot.com/service",
contentType: "application/json; charset=utf-8",
data: data,
success: function(data) {
alert("AJAX done");
}
});
并在webService中:
class webService(webapp2.RequestHandler):
def get(self):
self.response.headers.add_header('Access-Control-Allow-Origin', '*')
self.response.headers['Content-Type'] = 'application/json'
# do something
def post(self):
self.response.headers.add_header('Access-Control-Allow-Origin', '*')
self.response.headers['Content-Type'] = 'application/json'
# do something
def options(self):
self.response.headers['Access-Control-Allow-Origin'] = '*'
self.response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
self.response.headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE'
内容总结
以上是互联网集市为您收集整理的CORS – 使用AJAX在Python(webapp2)Web服务上发布全部内容,希望文章能够帮你解决CORS – 使用AJAX在Python(webapp2)Web服务上发布所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。