diff --git a/lib/rule_default.js b/lib/rule_default.js index 75e63e4..9f2294c 100644 --- a/lib/rule_default.js +++ b/lib/rule_default.js @@ -1,8 +1,17 @@ module.exports = { shouldUseLocalResponse : function(req,reqBody){ + //intercept all options request + if(req.method == "OPTIONS"){ + return true; + }else{ + return false; + } }, dealLocalResponse : function(req,reqBody,callback){ + if(req.method == "OPTIONS"){ + callback(200,mergeCORSHeader(req.headers),""); + } }, replaceRequestProtocol:function(req,protocol){ @@ -18,6 +27,7 @@ module.exports = { }, replaceResponseHeader: function(req,res,header){ + return mergeCORSHeader(req.headers, header); }, replaceServerResData: function(req,res,serverResData){ @@ -28,4 +38,20 @@ module.exports = { shouldInterceptHttpsReq :function(req){ } -}; \ No newline at end of file +}; + +function mergeCORSHeader(reqHeader,originHeader){ + var targetObj = originHeader || {}; + + delete targetObj["Access-Control-Allow-Credentials"]; + delete targetObj["Access-Control-Allow-Origin"]; + delete targetObj["Access-Control-Allow-Methods"]; + delete targetObj["Access-Control-Allow-Headers"]; + + targetObj["access-control-allow-credentials"] = "true"; + targetObj["access-control-allow-origin"] = reqHeader['origin'] || "-___-||"; + targetObj["access-control-allow-methods"] = "GET, POST, PUT"; + targetObj["access-control-allow-headers"] = reqHeader['access-control-request-headers'] || "-___-||"; + + return targetObj; +} \ No newline at end of file diff --git a/package.json b/package.json index c9c82e3..89e5ead 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anyproxy", - "version": "2.1.0", + "version": "2.1.1", "description": "a charles/fiddler like proxy written in NodeJs, which can handle HTTPS requests and CROS perfectly.", "main": "proxy.js", "bin": { diff --git a/proxy.js b/proxy.js index 9072cf1..2f6664c 100644 --- a/proxy.js +++ b/proxy.js @@ -144,9 +144,7 @@ function startWebServer(port){ //web socket interface var wss = new WebSocketServer({port: DEFAULT_WEBSOCKET_PORT}); - wss.on("connection",function(ws){ - console.log("wss connection"); - }); + wss.on("connection",function(ws){}); wss.broadcast = function(data) { for(var i in this.clients){ this.clients[i].send(data); diff --git a/web/css/page.css b/web/css/page.css index 0db77b4..6da9ed6 100644 --- a/web/css/page.css +++ b/web/css/page.css @@ -13,6 +13,10 @@ margin: 0 5px; } +.topHead .btn_disable{ + color: #777; +} + .mainTableWrapper{ margin-top: 0; } diff --git a/web/index.html b/web/index.html index 5a3c8ce..1e433e9 100644 --- a/web/index.html +++ b/web/index.html @@ -9,6 +9,8 @@