シーン:
フロントエンドとバックエンドの分離、およびローカルフロントエンド開発と呼び出しのインターフェイスには、クロスドメインの問題があります。通常、3つの解決策があります。
1.バックエンドインターフェイスをパッケージ化してローカルに実行します(短所:バックエンドの更新が更新されるたびに、テストサーバーの次の更新パッケージに移動する必要があります。また、ローカルでJavaランニング環境を構築する必要があります。
2。CORSクロスドメイン:バックエンドインターフェイスが戻ってきたら、 'Access-control-allow-origin':*をヘッダーに追加します(バックエンドがこれを処理するのが不便で、フロントエンドは痛みを伴う場合があります)
3. nodejsを使用してローカルHTTPサーバーを構築し、インターフェイスURLにアクセスするときに転送すると、ローカル開発中にクロスドメインの問題を完全に解決します。
使用されるテクニック:
1. nodejsを使用してローカルHTTPサーバーを構築します
2.ノードHTTP-Proxyを適用して、インターフェイスURLを転送します
具体的な方法:
1。Node.jsはローカルHTTPサーバーを構築します。 Shawn.xieの「NodejsがローカルHTTPサーバーを構築する」を参照してください
2。Node.jsは、node-http-proxyを転送するために使用されます。公式文書はhttps://github.com/nodejitsu/node-http-proxy#using-httpsです
3.操作方法が参照されています:http://hao.jser.com/archive/10394/?utm_source=tuicool&utm_medium=referral
4。これが私自身の実践的な操作です
プロジェクトの準備
1。NPM初期化
npm init
2.ノードHTTP-Proxyモジュールをインストールします
NPMインストールhttp-proxy - save-dev
3。プロジェクト構造
次の例では、HTMLファイルをルートディレクトリ './'に直接配置するか、proxy.jsでカスタマイズできるWebサイトディレクトリを指定します。
HTTPサーバーとプロキシ転送を構成します
var port = 3000; var http = require( 'http'); var url = require( 'url'); var fs = require( 'fs'); var mine = require( './ mine')。 httpproxy.createproxyserver({ターゲット: 'http://192.168.10.38:8180/'、//インターフェイスアドレス//次の設定はhttpsに使用されます// fs.readfilesync( 'server.crt'、 'utf8')//}、// secure:false:false}); proxy.on( 'error'、function(err、req、res){res.writehead(500、{'content-type': 'text/plain'});メッセージ。 ');}); var server = http.createserver(function(request、response){var pathname = url.parse(request.url).puthname; // var realpath = path.join( "main-pages"、pathname); pathname); console.log(pathname); console.log(realpath); var ext = path.extname(realpath); ext = ext.slice(1): 'unknown'; // juction if(pathname.indexof( "mspj-mall-admin")> 0 response);} fs.exists(realpath、function(exists){if(!exists){respons.writehead(404、{'content-type': 'text/plain'}); respons.write( "このリクエストurl" +パス + "はこのサーバーには見つかりませんでした。 {if(err){response.writehead(500、{'content-type': 'text/plain'}); respons.end(err);} else {var contenttype = mine [ext] || response.writehead(200、{'content-type': 'contenttype}) "binary"); response.end();}});}});}Mine.js
ここでは、Shawn.xieのソースコードを参照し、いくつかのフォントファイルMIMEを追加します。
exports.types = {"css": "text/css"、 "gif": "image/gif"、 "html": "text/html"、 "ico": "image/x-icon"、 "jpeg": "image/jpeg"、 "jpg": "image/jpeg"、 "js" "" "jss" "" " "Application/json"、 "PDF": "Application/PDF"、 "PNG": "image/png"、 "svg": "image/svg+xml"、 "swf": "application/x-shockwave-flash"、 "tiff": "image/tiff"、 "txt": "" "audio/x-ms-wma"、 "wmv": "video/x-ms-wmv"、 "xml": "text/xml"、 "woff": "application/x-woff"、 "woff2": "application/x-woff2"、 "tff": "application/x-font-trueType"、 "otf": "Application/vnd.ms-fontobject"};上記はすべてソースコードです
次に、プロジェクトのインターフェイスアドレスをhttp:// localhost:3000/...に変更します。
nodejsサービスを開始します
CMDを起動し、プロジェクトディレクトリを見つけて実行します
ノードproxy.js
アクセス:
http:// localhost:3000/index.html
データは、プロジェクトでhttp:// localhost:3000/......から取得され、地元に転送されることがわかります。
これにより、クロスドメインはありません。
上記は、ローカル開発ajaxのクロスドメイン問題を解決するためのnode.jsおよびnode-http-proxyの編集者の紹介です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!