在使用Ajax跨域请求时,若是设置Header的ContentType为application/json,会分两次发送请求。第前端
一次先发送Method为OPTIONS的请求到服务器,这个请求会询问服务器支持哪些请求方法(GET,POST等),json
支持哪些请求头等等服务器的支持状况。等到这个请求返回后,若是原来咱们准备发送的请求符合服务器的规则,那么才会继续发送第二个请求,不然会在Console中报错。跨域
注意Note后面的描述,在跨域的时候,除了contentType为application/x-www-form-urlencoded, multipart/form-data或者text/plain外,都会触发浏览器先发送方法为OPTIONS的请求。浏览器
好比说,你原来的请求是方法方法POST,若是第一个请求返回的结果Header中的Allow属性并无POST方法,服务器
那么第二个请求是不会发送的,此时浏览器控制台会报错,告诉你POST方法并不被服务器支持。app
不只如此,若是想要用ContentType:application/json发送跨域请求,服务器端还必须设置一个名为url
Access-Control-Allow-Headers 的Header,将它的值设置为 Content-Type,代表服务器可以接收code
到前端发送的请求中的ContentType属性并使用它的值。不然第二次请求也是发不出去的,浏览器console会orm
报错,并提示你服务器没有设置Access-Control-Allow-Headers。ip