jquery ajax中post请求server端先收到OPTIONS方法解决办法

0.现象

使用jquery下的ajax发送POST的请求时,jquery先发送一个OPTIOINS方法

1.问题原因

OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。
参考官宣RFC 7231, section 4.3.7: OPTIONS

2.解决方法

server接收OPTIONS方法,并明确告诉client该如何继续

    def do_OPTIONS(self):               
        self.send_response(200, "ok") #如果继续ajax的post请求,那么OPTIONS请求必须成功           
        self.send_header('Access-Control-Allow-Origin', '*') # 告知支持跨域                 
        self.send_header('Access-Control-Allow-Methods', 'GET, POST,OPTIONS') #告知ajax支持的方法
        self.send_header("Access-Control-Allow-Headers", "X-Requested-With,  Content-Type") #注意如果在ajax中指定了Content-Type,那么这里一定要加上,否则,ajax不会发送后续的POST

你可能感兴趣的:(web)