在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 使用jsonp解決跨域問題,通過Node開啟一個(gè)服務(wù),訪問一次為什么服務(wù)器打印出

使用jsonp解決跨域問題,通過Node開啟一個(gè)服務(wù),訪問一次為什么服務(wù)器打印出來兩次?

跨域的解決方案之一:jsonp

// server.js
var qs = require('queryString');
var http = require('http');
var server = http.createServer();

server.on('request', function(req, res) {
  console.log('irene'); // 打印irene

  var params = qs.parse(req.url.split('?')[1]);
  var fn = params.callback;

  // jsonp返回設(shè)置
  res.writeHead(200, { 'Content-Type': 'text/javascript' });
  res.write(fn + '(' + JSON.stringify(params) + ')');

  res.end();
})
server.listen('8094');
console.log('Server is running at port 8094...');

// jsonp.html
<html>
  <head></head>
  <body>
    <script>
      var script = document.createElement('script');
      script.type = 'text/javascript';
  
      // 傳參并指定回調(diào)執(zhí)行函數(shù)為onBack
      script.src = 'http://www.domain2.com:8094/login?user=admin&callback=onBack';
      document.head.appendChild(script);
  
      // 回調(diào)執(zhí)行函數(shù)
      function onBack(res) {
          alert(JSON.stringify(res));
      }
   </script>
  </body>
 </html>
 

當(dāng)我在瀏覽器中訪問jsonp.html,為什么server.js中的'irene'會打印兩次?

回答
編輯回答
北城荒

favicon.ico 。。。那你用的根本不是跨域環(huán)境啊,只是嘗試了下 jsonp 而已。
favicon.ico 是個(gè)網(wǎng)站都會去請求一下,自動發(fā)起的,把你的 jsonp 邏輯加到按鈕點(diǎn)擊事件里再去觸發(fā)就能看到只有一次了。

2017年9月1日 06:23
編輯回答
陌上花

是因?yàn)檎埱罅藘纱?,一次localhost:8094,一次localhost:8094/favicon.ico,打印res.url就看的很清楚了

2018年3月14日 00:39