鍍金池/ 問(wèn)答/HTML/ 為何總是No 'Access-Control-Allow-Origin'

為何總是No 'Access-Control-Allow-Origin'

各位大濕們問(wèn)個(gè)略low的問(wèn)題,我在本地啟個(gè)服務(wù),代碼如下:

var http = require("http");
http.createServer(function (req , res){
    res.writeHead(200,{'Content-Type':'text/plain'})
    res.write("we are is content");
    res.end();
}).listen(8899);

然后新建和html 里面去請(qǐng)求這個(gè)服務(wù) 代碼如下:

    var xml = new XMLHttpRequest();
    var but = document.getElementById("button");
    but.onclick=function (){
        xml.open('GET','http://localhost:8899',true);
        xml.send();
    }

瀏覽器一直報(bào)報(bào)錯(cuò),似乎跨域問(wèn)題,網(wǎng)上也百度了一些解決辦法,什么設(shè)置請(qǐng)求頭啊、什么設(shè)置dataType=jsonp啊什么的都試了下,雖然寫(xiě)了一年多web,但http對(duì)我來(lái)講就像上學(xué)時(shí)的英語(yǔ)一樣,有種恐懼感,永遠(yuǎn)搞不懂......!報(bào)的最多錯(cuò)誤就是:

clipboard.png
感覺(jué)這玩意比webpack構(gòu)建個(gè)項(xiàng)目難一百倍。。。
像這種情況到底要怎么搞才能發(fā)送成功。。。。?要原生的ajax;

回答
編輯回答
吢涼

原因:跨域
兩個(gè)解決辦法:
前臺(tái)解決或者后臺(tái)解決
第一種就像一樓所說(shuō)cors,服務(wù)器端設(shè)置 header("Access-Control-Allow-Origin", "");后面的“”表示允許任何域訪問(wèn),安全起見(jiàn),你也可以把后面的“*”換為請(qǐng)求的URL
第二種就是客戶端解決啦,JSONP(還不會(huì)的可以私信我哦)

2018年5月7日 21:05
編輯回答
吃藕丑

推薦看看阮一峰大神兩篇博文,瀏覽器同源政策及其規(guī)避方法

CORS通信

希望對(duì)您有所幫助

2018年2月6日 21:12
編輯回答
青黛色

首先這個(gè)問(wèn)題是由于瀏覽器的同源策略導(dǎo)致的,所以建議先看一下同源策略是什么。
其次由于同源策略的限制就會(huì)產(chǎn)生跨域的問(wèn)題,而web端對(duì)于跨域有很多種解決方案,比如你說(shuō)的jsonp和樓上回復(fù)的cors的方式,建議系統(tǒng)的看一下這些,大概就有概念了。

2018年7月18日 00:12
編輯回答
哎呦喂
    
    var http = require("http");
http.createServer(function (req , res){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.writeHead(200,{'Content-Type':'text/plain'})
    res.write("we are is content");
    res.end();
}).listen(8899);
2017年1月8日 07:40