javascript - 发送请求时,时常在发起前多一条请求,会有哪些原因引起?
问题描述
接口都是CORS跨域
多出的一条请求:Request Method:OPTIONS、没有传递参数
多出的条请求的response headers
Access-Control-Allow-Credentials:trueAccess-Control-Allow-Headers:Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-HeadersAccess-Control-Allow-Methods:POST, GET, PUT, OPTIONS, DELETEAccess-Control-Allow-Origin:*Access-Control-Max-Age:3600Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCHConnection:keep-aliveContent-Length:0Date:Fri, 05 May 2017 09:27:40 GMTServer:WildFly/10X-Powered-By:Undertow/1
正常请求的response headers
Access-Control-Allow-Credentials:trueAccess-Control-Allow-Headers:Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-HeadersAccess-Control-Allow-Methods:POST, GET, PUT, OPTIONS, DELETEAccess-Control-Allow-Origin:*Access-Control-Max-Age:3600Connection:keep-aliveContent-Type:application/json;charset=UTF-8Date:Fri, 05 May 2017 09:27:41 GMTServer:WildFly/10Set-Cookie:JSESSIONID=Zv7WiKxKZFNkE6ihLsGfGwYF8ZEFNEFxENl7rNLW.localhost; path=/bridgeTransfer-Encoding:chunkedX-Powered-By:Undertow/1
问题解答
回答1:跨域 post请求,需要option一次
回答2:楼上正解,如果是简单的跨域请求,建议不要使用POST
回答3:你curl一下你的请求,应该就不会有这样的预请求
回答4:1楼正解,跨域请求会先option一次到服务端,经过服务端验证通过后,在发送请求
