不少前端筒子老想着跨域,這可不是什麼特別的事情,但是要支持不暴露我要支持的跨域域名這就有難度了? 嘿嘿嘿,能夠想一想,只有訪問的時候我才說,額,你是能夠跨域的!因而乎這份動態跨域的配置就出路咯!! 思路: 正則匹配到來源,而後根據來源決定跨啥域。固然,正則決定了你要給誰跨。 廢話很少說,看代碼。php
可能有筒子問題,爲啥不用聯合條件,我要說,nginx不茲磁~~~orZ前端
固然,下面的設置僅容許GET跨,你還能夠設置各類METHOD條件, have fun :-)nginx
1.支持開發 : 正文使用了正則1:
^(http:\/\/(?:(?:(foo|bar).fuck.com|\d+\.\d+\.\d+\.\d+)(?:[:]\d+)?))?\/.*$
api
主要解決內網中前端筒子用ip+port調試本地代碼訪問內網測試環境api的問題,同時也兼容內網測試環境域名訪問。跨域
看,我對前端筒子不要太好~~測試
^(http:\/\/(?:(?:(foo|bar).fuck.com|123.123.123.123)))?\/.*$
url
該表達式則指明瞭至此特定域名和ip,但不帶端口號(線上帶個端口彆扭不?)調試
好了好了,看了這麼多,我知道你要脫褲子了,我來幫你 :Pcode
# serve 配置片斷 set $flag 0; set $ref_host ''; set $ref_url ''; if ($http_referer ~ ^(http:\/\/(?:(?:(foo|bar).fuck.com|\d+\.\d+\.\d+\.\d+)(?:[:]\d+)?))?\/.*$) { set $ref_host $2; set $ref_url $1; set $flag 1; } set $flag_uri 0; if ($uri = /fuck_some_url.php) { set $flag_uri 1; } if ($flag = 1) { set $flag_uri 2; } if ( $flag_uri = 2) { add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Methods GET; add_header Access-Control-Allow-Origin $ref_url; }