关于跨域 Response to preflight request doesn‘t pass access control check
做項目的時候由于訪問了不同的服務器,然后導致了跨域問題,報錯情況為:
has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: Redirect is not allowed for a preflight request。
從網上找了解決辦法,也就是采用CORS方案,在要訪問的跨域服務器上的返回頁面加上標頭:
response.setHeader(“Access-Control-Allow-Origin”,request.getHeader(“Origin”));
response.setHeader(“Access-Control-Allow-Credentials”, “true”);
response.addHeader(“Access-Control-Allow-Methods”, “POST, GET, OPTIONS, DELETE, PUT”);
response.addHeader(“Access-Control-Allow-Headers”, request.getHeader(“Access-Control-Request-Headers”));
response.addHeader(“Access-Control-Max-Age”, “120”);
但是加了以后不管用。
我注意到后面有一句Redirect is not allowed for a preflight request:重定向不允許preflight request請求。我尋思著我這也沒重定向啊。
于是我查看了我的請求:
發現我的請求URL:http://localhost:8080/ReadCard2后面好像少了一個斜杠’/’
換成http://localhost:8080/ReadCard2/果然沒有報跨域問題了!
要是還存在報錯,那么你的請求可能是復雜請求而部署簡單請求,要是復雜請求,服務器一般不允許訪問的,復雜請求發送之前會發送一個預檢請求,詢問服務器自己有沒有權限。最好在過濾器里邊處理預檢請求(也就是返回指定的http的header,這些header的作用是給前端訪問權限),因為你的預檢請求會到不了jsp,因此jsp里邊的代碼進行預檢請求的處理是無效的,根本不會執行到,serverlet里邊我不知道能不能處理預檢請求。
總結
以上是生活随笔為你收集整理的关于跨域 Response to preflight request doesn‘t pass access control check的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipseweb开发遇到的bug
- 下一篇: jsp页面返回文本时产生大量空格的解决办