鍍金池/ 問答/人工智能  網(wǎng)絡(luò)安全  HTML/ 跨域后臺設(shè)置了Access-Control-Allow-Origin:*,能訪問

跨域后臺設(shè)置了Access-Control-Allow-Origin:*,能訪問到,但是瀏覽器會報錯

1.會發(fā)兩次請求,也能訪問返回結(jié)果,但是瀏覽器報錯;
2.瀏覽器報錯

 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

3.Content-Type:applycation/json;

疑問:問什么允許訪問還會報錯

回答
編輯回答
做不到

exprss里是這么配置的,關(guān)鍵在于允許options請求以及options請求自動返回200
看你說的返回兩次可能是因為post請求沒達(dá)到簡單請求的要求,會發(fā)送options

// cors跨域配置
app.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With, Current-Page');
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');

    if (req.method == 'OPTIONS') {
        res.sendStatus(200);
    } else {
        next();
    }
});
2018年5月31日 23:28
編輯回答
哎呦喂

post發(fā)送json時,瀏覽器會做為復(fù)雜請求處理,默認(rèn)會發(fā)送一個options 請求,后臺需要返回
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-Type

可以看下 阮一峰的文章 http://www.ruanyifeng.com/blo...

2017年10月22日 01:50
編輯回答
寫榮

找到的原因是這個請求不屬于簡單請求,會發(fā)送兩次請求,一次options,一次post。 后端只在第一次請求的響應(yīng)中設(shè)置了'Access-Control-Allow-Headers',post請求并沒有,所以拿到了值瀏覽器還會報錯;應(yīng)該在兩次響應(yīng)中都設(shè)置'Access-Control-Allow-Headers'

2017年10月4日 03:19
編輯回答
兔寶寶

看一下是不是返回頭里Access-Control-Allow-Origin有多個

2017年3月15日 08:09