我试图从我的Ionic-Angular 4应用程序向Tornado服务器发出POST
请求。但是,我收到了以下问题 -
405选项
我的cloud-service.ts
如下:
let url = BASE_URL+"/htmltopdf";
// alert(url);
let body = JSON.stringify({ content: content});
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(url, body, options).map(res => res.json());
}
在研究了一些相关答案后,我将application/json
更改为text/plain
,以某种方式解决了这个问题。但是,没有从服务器发送数据。
我的js
功能如下:
this.cloudService.createPDF(content).subscribe(data => {
let result = data.result;
if(result == "ok"){
let pdfurl = data.pdfurl;
console.log(pdfurl);
}
}, error => {
});
更新:我在BaseHadler
中进行了以下更改,如此answer中所述。 405 OPTIONS
问题似乎已得到解决。但是,服务器现在不会将任何数据返回给客户端。查询成功,200 ok消息,但没有数据返回给客户端。
这是我的BaseHandler
课程:
class BaseHandler(tornado.web.RequestHandler):
def set_default_headers(self):
print "setting headers!!!"
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header("Access-Control-Allow-Headers", "Content-Type, x-requested-with")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
def get_current_user(self):
user_json = self.get_secure_cookie("user")
if user_json:
return tornado.escape.json_decode(user_json)
else:
return None
def set_current_user(self, user):
if user:
self.set_secure_cookie("user", tornado.escape.json_encode(user))
else:
self.clear_cookie("user")
def options(self):
# # no body
self.set_status(204)
self.finish()
服务器以这种格式返回数据:
self.finish(dict(result="ok",user=email))
请帮助解决这个问题。