酷知百科網

位置:首頁 > 遊戲數碼 > 電腦

CORS .net 跨域解決方案

電腦2.38W

IIS部署wcf rest項目(或 web項目)時,CORS跨域配置,並完美解決POST帶參數請求問題

操作方法

(01)如圖:開啟IIS,找到 “HTTP響應標頭”

CORS  跨域解決方案

(02)添加如下配置資訊:Access-Control-Allow-Methods : GET,POST,PUT,DELETE,HEAD,OPTIONSAccess-Control-Allow-Origin : *Access-Control-Allow-Headers : Content-Type,api_key,Authorization,X-Requested-With如下圖所示:(注:如是J2EE項目,可在統一URL攔截器中,eader("Access-Control-Allow-Headers", "Content-Type,api_key,Authorization,X-Requested-With");eader("Access-Control-Allow-Method", "GET,POST,PUT,DELETE,HEAD,OPTIONS");eader("Access-Control-Allow-Origin", "*");)注eader("Access-Control-Allow-Origin", "*"); “ *”可替換爲只允許的域,如:"http://localhost:8080/*"

CORS  跨域解決方案 第2張

(03)此時已經解決 GET 請求問題可成功返回數據。POST請求比較複雜,跨域帶參請求時瀏覽器會先發一個OPTIONS請求(就是這個問題困擾了我兩天)

(04)解決方法如下:同一個請求需要兩個相同請求地址的方法,一個標記爲“POST”,另一個標記爲“OPTIONS“,實體方法爲標記”POST“的方法,這裏”OPTIONS“方法不需要做任何邏輯操並且返回值爲void即可(其實OPTIONS請求爲瀏覽器的校驗,髮帶參數的POST請求時瀏覽器會先發一個OPTIONS請求,檢驗request 頭資訊和response頭資訊一致後才真正發起POST請求)。 代碼如下圖所示:(JAVA同理)

CORS  跨域解決方案 第3張

(05)jquery Ajax請求如下所示:注意其中的contentType : 'text/json'和data:'json格式的字元串'

(06)到此 CORS 跨域Ajax請求完全解決。

特別提示

這裏的content-type不屬於(application/x-www-form-urlencoded,multipart/form-data,text/plain)中的任何一種,所以是複雜請求。