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一次到服務端,經過服務端驗證通過后,在發送請求
