欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到夢飛科技

服務(wù)器租用

當(dāng)前優(yōu)惠活動:

最簡單實(shí)現(xiàn)跨域的方法:使用nginx反向代理

跨域,指的是欣賞器不能執(zhí)行其他網(wǎng)站的劇本。它是由欣賞器的同源計(jì)策造成的,是欣賞器對javascript施加的安詳限制。

所謂同源是指,域名,協(xié)議,端口溝通。欣賞器執(zhí)行javascript劇本時(shí),會查抄這個(gè)劇本屬于誰人頁面,假如不是同源頁面,就不會被執(zhí)行。

同源計(jì)策的目標(biāo),是防備黑客做一些做奸不法的運(yùn)動。好比說,東莞機(jī)房托管 ,假如一個(gè)銀行的一個(gè)應(yīng)用答允用戶上傳網(wǎng)頁,假如沒有同源計(jì)策,黑客可以編寫一個(gè)登岸表單提交到本身的處事器上,獲得一個(gè)看上去相當(dāng)高峻上的頁面。黑客把這個(gè)頁面通過郵件等發(fā)給用戶,用戶誤認(rèn)為這是某銀行的主網(wǎng)頁舉辦登岸,就會泄露本身的用戶數(shù)據(jù)。而因?yàn)樾蕾p器的同源計(jì)策,黑客無法收到表單數(shù)據(jù)。

此刻跟著RESTFUL的風(fēng)行,許多應(yīng)用提供http/https接口的API,通過xml/json名目對外提供處事,實(shí)現(xiàn)開放架構(gòu)。如,微博、微信、天氣預(yù)報(bào)、openstack等網(wǎng)站和應(yīng)用都提供restful接口。

Web應(yīng)用也在向單頁面偏向成長。

越來越多的web應(yīng)用此刻是這樣的架構(gòu):

靜態(tài)單個(gè)web頁面

ajax挪用

RESTFUL處事

我們本可以操作各個(gè)網(wǎng)站提供的API,做出許多出色的Web應(yīng)用。但欣賞器執(zhí)行javascript時(shí)的跨域限制,就成為了這類開放架構(gòu)的攔路虎。

本文提出了一種簡樸有效的方法辦理跨域問題。

常用的跨域要領(lǐng)有這樣一些:

1,利用iFrame會見另一個(gè)域。 然后再從另一個(gè)頁面讀取iFrame的內(nèi)容。jquery等有一些封裝。

聽說Firefox等大概不支持讀取另一個(gè)iFrame的內(nèi)容。

2,jsonp。需要處事器支持。利用script src動態(tài)獲得一段java代碼。是回調(diào)頁面上的js函數(shù),參數(shù)是一個(gè)json工具。

jquery也有封裝。

3,配置http頭,Access-Control-Allow-Origin:*

但聽說IE有一些版本不識別這個(gè)http頭。

4,處事器署理。如,處事器寫一個(gè)url的處理懲罰action。其參數(shù)是一個(gè)url。這個(gè)處事器會用參數(shù)拼湊一個(gè)url,用httpclient庫去執(zhí)行url,然后把讀取的內(nèi)容再輸出到http客戶端。

上面提到的這些跨域要領(lǐng),都有一些問題。有的不能支持所有欣賞器,有的需要修改javascript代碼,有的需要重寫處事器端代碼。有的在session等場景下會有問題。

其實(shí),用nginx反向署理實(shí)現(xiàn)跨域,是最簡樸的跨域方法。只需要修改nginx的設(shè)置即可辦理跨域問題,支持所有欣賞器,支持session,不需要修改任何代碼,而且不會影響處事器機(jī)能。

我們只需要設(shè)置nginx,在一個(gè)處事器上設(shè)置多個(gè)前綴來轉(zhuǎn)發(fā)http/https請求到多個(gè)真實(shí)的處事器即可。這樣,這個(gè)處事器上所有url都是溝通的域名、協(xié)議和端口。因此,對付欣賞器來說,這些url都是同源的,沒有跨域限制。而實(shí)際上,這些url實(shí)際上由物理處事器提供處事。這些處事器內(nèi)的javascript可以跨域挪用所有這些處事器上的url。

下面,給出一個(gè)nginx支持跨域的例子,舉辦詳細(xì)說明。

如,我們有兩個(gè)pythonflask開拓的項(xiàng)目:testFlask1和testFlask2。

testFlask2項(xiàng)目上的javascript劇本要通過ajax方法挪用testFlask1的一個(gè)url,獲取一些數(shù)據(jù)。

正常環(huán)境下陳設(shè),就會有跨域問題,欣賞器拒絕執(zhí)行如下這樣的挪用。

 

$("button").click(function () {
    $.get("127.0.0.1:8081/partners/json", function (result) {
        $("div").html(result);
    });
});

 

 

$("button").click(function () {

    $.get("127.0.0.1:8081/partners/json", function (result) {

        $("div").html(result);

    });

});

下面把testFlask2項(xiàng)目標(biāo)javascrip文件修改一下。這樣會見同源的url,就不會有跨域問題。

 

$("button").click(function () {
    $.get("partners/json", function (result) {
        $("div").html(result);
    });
});

 

 

$("button").click(function () {

    $.get("partners/json", function (result) {

        $("div").html(result);

    });

});

可是,我們testFlask2項(xiàng)目實(shí)際上沒有partners/json這樣的url,那怎么處理懲罰呢?

我們這樣編寫nginx的設(shè)置文件:

 

夢飛科技 - 全球數(shù)據(jù)中心基礎(chǔ)服務(wù)領(lǐng)先供應(yīng)商

Copyright © 2003-2019 MFISP.COM. 國外服務(wù)器租用 IDC公司 版權(quán)所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 开江县| 天长市| 通化县| 新建县| 平湖市| 滦南县| 镇赉县| 龙江县| 探索| 泽普县| 拜泉县| 甘肃省| 宣恩县| 陈巴尔虎旗| 富顺县| 分宜县| 南汇区| 博罗县| 东港市| 岑巩县| 肥乡县| 福建省| 双流县| 类乌齐县| 磴口县| 庄浪县| 东丽区| 池州市| 衢州市| 集贤县| 阳城县| 政和县| 永安市| 天气| 社会| 仪陇县| 辰溪县| 安庆市| 英吉沙县| 西华县| 桦南县|