2017-08-27 36 views
0

首先我读过这样一个问题: Tornado server: enable CORS requests
我所做的是:CORS在python龙卷风只发送选项要求

class BaseHandler(RequestHandler): 
    def set_default_headers(self, *args, **kwargs): 
     self.set_header("Access-Control-Allow-Origin", "*") 
     self.set_header("Access-Control-Allow-Headers", "x-requested-with") 
     self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS") 

而且也是一种选择方法:

def options(self): 
    self.set_status(204) 
    self.finish() 

并在我的处理程序中:

class AmirTest(BaseHandler): 
    def get(self, *args, **kwargs): 
     self.write('You have requested get method!') 

    def post(self, *args, **kwargs): 
     self.write('You have requested post method!') 

    def put(self, *args, **kwargs): 
     self.write('You have requested put method!') 

    def delete(self, *args, **kwargs): 
     self.write('You have requested delete method!') 

这是我的要求:

function del(){ 
    $.rest.put(
     "http://xxx.xxx.xxx.xxx:7777/amir_test", 
     {user: "A",pass: "b"}, 
     function (data) {console.log(data);} 
    ); 
} 

问题是,当我提出的要求,这个网址,在督察的网络选项卡中,只有一个选项,没有PUT请求。我该怎么办?

Loot at the inspect element

回答

1

Access-Control-Allow头单独只为GET工作(和一些POST)请求。对于其他方法,OPTIONS请求是强制性的。您必须执行options(),如链接问题的答案中所示。

+0

我已经做了,但忘了复制到这里,问题已更新,但结果相同!现在怎么办? –

+0

您的'Access-Control-Allow-Methods'需要包含您支持的所有方法(在这种情况下包括PUT和DELETE) –