国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前后端分離后開發(fā)階段跨域問(wèn)題處理

FrozenMap / 550人閱讀

摘要:前后端分離之后,開發(fā)階段接口聯(lián)調(diào)就會(huì)出現(xiàn)跨域問(wèn)題。當(dāng)然,跨域問(wèn)題的解決方案還是挺多的,這里梳理下我接觸到的幾種方案。對(duì)于前端開發(fā)者來(lái)說(shuō),通信與同源的通信沒(méi)有差別,代碼完全一樣。后端實(shí)現(xiàn)接口只需合理設(shè)置,以為例

前后端分離之后,開發(fā)階段接口聯(lián)調(diào)就會(huì)出現(xiàn)ajax跨域問(wèn)題。
當(dāng)然,跨域問(wèn)題的解決方案還是挺多的,這里梳理下我接觸到的幾種方案。

一、禁用Chrome的同源策略

目測(cè)這是最簡(jiǎn)單粗暴的方案

可以通過(guò)使用Chrome命令行啟動(dòng)參數(shù)來(lái)改變Chrome瀏覽器的設(shè)置。
這里使用的是disable-web-security參數(shù),這個(gè)參數(shù)可以降低Chrome瀏覽器的安全性,禁用同源策略。要支持跨域,還需要加上user-data-dir

下面以Windows為例。
1.先關(guān)閉所有的Chrome窗口。
2.新建一個(gè)Chrome快捷方式,右擊->屬性->快捷方式。
3.在目標(biāo)(T)中設(shè)置參數(shù):

--args --disable-web-security --user-data-dir

4.點(diǎn)擊應(yīng)用/確定,以這個(gè)快捷方式打開Chrome瀏覽器,效果如下:

二、webpack-dev-server代理
devServer: {
    ...
    proxy: {
        "/api": {
            target: "http://127.0.0.1:8080",
            pathRewrite: {"^/api": "/api/v1"}
        }
    }
}

將 "/api" 通過(guò)本地開發(fā)服務(wù)器webpack-dev-server轉(zhuǎn)發(fā)到 "http://127.0.0.1:8080",即轉(zhuǎn)發(fā)到后端服務(wù)。pathRewrite用于路徑轉(zhuǎn)換,具體取決于你請(qǐng)求的uri與后端服務(wù)實(shí)際uri的差異,比如你本地起的80端口,你的uri為 "http://localhost/api",將為轉(zhuǎn)換成 "http://127.0.0.1:8080/api/v1"。
詳細(xì)配置請(qǐng)移步 webpack devServer。

三、nginx反向代理
http {
    ...
    server {
        ...
        location /api/ {
            proxy_pass http://127.0.0.1:8080
        }
    }
}
四、后端實(shí)現(xiàn)CORS接口

CORS需要瀏覽器和服務(wù)器同時(shí)支持。目前所有現(xiàn)代瀏覽器都支持該功能,IE瀏覽器不能低于IE10
對(duì)于前端開發(fā)者來(lái)說(shuō),CORS通信與同源的AJAX通信沒(méi)有差別,代碼完全一樣。

后端實(shí)現(xiàn)CORS接口只需合理設(shè)置Response Header,以node為例:

const express = require("express");
let app = express();
app.all("*", (req, res, next) => {
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    next();
});
...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39691.html

相關(guān)文章

  • 分離下的CAS跨域流程分析

    摘要:這種情況通常發(fā)生在反向代理的時(shí)候,前端發(fā)起請(qǐng)求代理服務(wù)器,代理服務(wù)器發(fā)起請(qǐng)求到,這時(shí)候就容易導(dǎo)致域名不一致,請(qǐng)一定要注意這點(diǎn)。 寫在最前 前后端分離其實(shí)有兩類: 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件整個(gè)放入后端項(xiàng)目中。 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件放入單獨(dú)的靜態(tài)資源服務(wù)器中,如nginx。 這兩種方案最大的區(qū)別就是生產(chǎn)階段。由于第...

    ckllj 評(píng)論0 收藏0
  • 分離下的CAS跨域流程分析

    摘要:這種情況通常發(fā)生在反向代理的時(shí)候,前端發(fā)起請(qǐng)求代理服務(wù)器,代理服務(wù)器發(fā)起請(qǐng)求到,這時(shí)候就容易導(dǎo)致域名不一致,請(qǐng)一定要注意這點(diǎn)。 寫在最前 前后端分離其實(shí)有兩類: 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件整個(gè)放入后端項(xiàng)目中。 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件放入單獨(dú)的靜態(tài)資源服務(wù)器中,如nginx。 這兩種方案最大的區(qū)別就是生產(chǎn)階段。由于第...

    DevTalking 評(píng)論0 收藏0
  • 分離下的CAS跨域流程分析

    摘要:這種情況通常發(fā)生在反向代理的時(shí)候,前端發(fā)起請(qǐng)求代理服務(wù)器,代理服務(wù)器發(fā)起請(qǐng)求到,這時(shí)候就容易導(dǎo)致域名不一致,請(qǐng)一定要注意這點(diǎn)。 寫在最前 前后端分離其實(shí)有兩類: 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件整個(gè)放入后端項(xiàng)目中。 開發(fā)階段使用dev-server,生產(chǎn)階段是打包成靜態(tài)文件放入單獨(dú)的靜態(tài)資源服務(wù)器中,如nginx。 這兩種方案最大的區(qū)別就是生產(chǎn)階段。由于第...

    jay_tian 評(píng)論0 收藏0
  • Node.js作為中間層實(shí)現(xiàn)簡(jiǎn)單的分離

    摘要:基本邏輯如下圖所示對(duì)此做了一個(gè)點(diǎn)贊的,邏輯不復(fù)雜,但達(dá)到了作為中間層實(shí)現(xiàn)前后端分離的目的。 零、用koa2實(shí)現(xiàn)前后端分離的點(diǎn)贊+1的功能(歡迎clone和star) Github:https://github.com/pengxiaohua/praise-by-koa簡(jiǎn)書:http://www.jianshu.com/p/c3215333655a 一、前后端不分離存在什么問(wèn)題 之前做一...

    moven_j 評(píng)論0 收藏0
  • Nginx反向代理解決聯(lián)調(diào)跨域問(wèn)題

    摘要:反向代理前后端聯(lián)調(diào)跨域什么是跨域跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。這時(shí)候,用反向代理實(shí)現(xiàn)跨域,是最簡(jiǎn)單的跨域方式。 keywords: Nginx反向代理 前后端聯(lián)調(diào) 跨域 1.什么是跨域 跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)javascript施加的安全限制。 所謂同源是指,域名,協(xié)議,端口都相同。瀏覽器執(zhí)行javascrip...

    QiuyueZhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<