405选项错误:带有Python / Tornado后端的Ionic 3 Angular 4

时间:2017-10-20 08:58:02

标签: python http-headers cors tornado

我试图从我的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))

请帮助解决这个问题。

0 个答案:

没有答案