今天小編給大家分享一下Nginx服務(wù)器中如何處理AJAX跨域請求的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
目前成都創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、榆林網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
nginx 實(shí)現(xiàn)ajax跨域請求
ajax從一個域請求另一個域會有跨域的問題。那么如何在nginx上實(shí)現(xiàn)ajax跨域請求呢?要在nginx上啟用跨域請求,需要添加add_header access-control*指令。如下所示:
location /{ add_header 'access-control-allow-origin' 'http://other.subdomain.com'; add_header 'access-control-allow-credentials' 'true'; add_header 'access-control-allow-methods' 'get'; ... ... the rest of your configuration here ... ... }
注釋如下:
第一條指令:授權(quán)從other.subdomain.com的請求
第二條指令:當(dāng)該標(biāo)志為真時,響應(yīng)于該請求是否可以被暴露
第三天指令:指定請求的方法,可以是get,post等
如果需要允許來自任何域的訪問,可以這樣配置:
access-control-allow-origin: *
重啟nginx
service nginx reload
ajax跨域請求測試
成功時,響應(yīng)頭是如下所示:
http/1.1 200 ok server: nginx access-control-allow-origin: other.subdomain.com
用nginx和apache的反向代理解決ajax的跨域問題
傲游主站上有一個很吸引人的功能,就是下載次數(shù)計數(shù),如下圖所示。這個功能就是利用了上述技術(shù)實(shí)現(xiàn)的。
從下圖的firebug中可以看到,該頁面通過ajax反復(fù)請求一個名為/api/counter的路徑以徑獲取最新的下載數(shù)量。
而這個輸出路徑實(shí)際上在服務(wù)器上是不存在的,這個路徑只是另外一臺服務(wù)器某個路徑而已,這就是使用了nginx的反向代理功能實(shí)現(xiàn)的。
1、nginx
回到計數(shù)器的這個例子,nginx的配置片段如下所示:
location /api/counter { rewrite (.*) /out break; proxy_pass http://hfahe.maxthon.com; proxy_set_header host "hfahe.maxthon.com"; }
那么訪問http://www.maxthon.cn/api/counter這個地址,輸出和直接訪問http://hfahe.maxthon.com/out這個地址是完全一樣的,如下圖所示。通過這種方式,本地的ajax就能夠讀取到其他遠(yuǎn)程服務(wù)器的數(shù)據(jù)了。
proxy_set_header參數(shù)在需要進(jìn)行域名的轉(zhuǎn)發(fā)時使用。nginx還可以進(jìn)行端口的轉(zhuǎn)發(fā),只需將proxy_pas
s配置修改為http://hfahe.maxthon.com:81這種形式即可。
2、apache
apache反向代理需要使用mod_proxy和mod_proxy_http.so等模塊。
在windows下的配置如下所示:
loadmodule proxy_module modules/mod_proxy.so loadmodule proxy_http_module modules/mod_proxy_http.so proxyrequests off proxypass /start http://i.maxthon.cn/ proxypass /proxy http://192.168.1.111/proxy/ proxypassreverse /proxy http://192.168.1.111/proxy/ # for server redirect
proxypass和proxypassreverse指令都是反向代理需要的配置。proxypass用于將一個遠(yuǎn)程服務(wù)器映射到本地服務(wù)器的url空間中。而proxypassreverse主要解決后端服務(wù)器重定向造成的繞過反向代理的問題,在后端服務(wù)器會進(jìn)行服務(wù)器端跳轉(zhuǎn)時使用,對http重定向時回應(yīng)中的location、content-location和uri頭里的url進(jìn)行調(diào)整。
而在linux下的配置如下所示:
loadmodule proxy_module /usr/lib/apache2/modules/mod_proxy.so loadmodule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so proxyrequests off proxypass /fb http://fb.maxthon.com/ajax proxypassreverse /fb http://192.168.1.111/proxy/ # for server redirect
以上就是“Nginx服務(wù)器中如何處理AJAX跨域請求”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:Nginx服務(wù)器中如何處理AJAX跨域請求
新聞來源:http://chinadenli.net/article6/jgcsig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、網(wǎng)站維護(hù)、Google、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)