我試圖向REST API提出請求。這是一個CORS請求。 我的前端:角1.5(本地主機:3000) 我的後端:Django的(***** ddns.net)CORS與Django和Angular的預檢請求
所以我使用的服務(由人誰不希望共享的代碼所做:(),那就是在真正的請求(預檢)之前做一個OPTIONS請求。確切地說,這個調用是通過UI-路由器狀態定義的解析選項進行的。 Django有CORS允許*。
這個是我在谷歌鉻中得到的錯誤:
XMLHttpRequest cannot load https://****.net/api/myprofile. The request was redirected to 'https://*****.net/punchclock/api/myprofile/', which is disallowed for cross-origin requests that require preflight.
如果我在控制器中做一個經典的$ http請求,它我工作。
這是請求收到我的Django:
+6655:5740d0f9:10|
OPTIONS /punchclock/api//myprofile HTTP/1.0|
Host:*****.net|
Connection:close|
Pragma:no-cache|
Cache-Control:no-cache|
Access-Control-Request-Method:GET|
Origin:http%3a//localhost%3a3000|
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36|
Access-Control-Request-Headers:accept, authorization|
Accept:*/*|
Referer:http%3a//localhost%3a3000/dashboard|
Accept-Encoding:gzip, deflate, sdch|
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2
-6655:5740d0f9:10
這是我得到的迴應,如果我與郵差做到這一點(它正在與郵差當我做一個OPTIONS請求)
Access-Control-Allow-Headers →x-requested-with, content-type, accept, origin, authorization, x-csrftoken
Access-Control-Allow-Methods →GET, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Allow-Origin →*
Access-Control-Max-Age →86400
Allow →GET, HEAD, OPTIONS
Connection →keep-alive
Content-Type →application/json
Date →Sat, 21 May 2016 21:15:02 GMT
Server →nginx/1.6.2
Transfer-Encoding →chunked
Vary →Accept
X-Frame-Options →SAMEORIGIN
我認爲這是Django方面的一個問題,我不知道。如果您有任何想法...(我需要學習很多關於CORS的...)
我做了你所說的。首先,我檢查了鉻調試器,這就是我得到的結果: '第一個請求,OPTIONS返回200 請求方法:選項 狀態碼:200 OK 遠程地址:**。***。* **。***:***' 但第二個: '請求URL:https://*****.ddns.net/api/myprofile 請求方法:GET 狀態碼:301永久移動 遠程地址:**。***。***。***:***' 另外我試圖使用郵遞員(+攔截器插件)添加所有標題,它也返回一個200。 – NOaMTL
然後你的問題不是CORS,如果你從OPTIONS得到200,真正的請求301是我想的重定向,所以服務器端的人應該能夠幫助你。或者在重定向時向新網址發出第二個請求 –
我試圖使用所有頭文件並模擬郵遞員獲取郵件,這是一個200 ...我很困惑。 而且我也嘗試直接對redirect url進行OPTIONS和GET,並且遇到同樣的問題。 – NOaMTL