近期用uni-app開發(fā)的應(yīng)用,在小程序中沒有任何問(wèn)題,包括調(diào)試、上線,但是在google chrome調(diào)試網(wǎng)頁(yè)版時(shí)就出現(xiàn)接口報(bào)405 method not allowed錯(cuò)誤。
按照網(wǎng)上的方法在nginx跨域請(qǐng)求cors配置如下:
location / {
add_header 'Access-Control-Allow-Origin' 'https://api.xxxx.com';
add_header "Access-Control-Allow-Credentials" "true";
add_header "Access-Control-Allow-Headers" "x-requested-with,content-type";
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
主要是添加了三個(gè)用于控制CORS的頭信息:
Access-Control-Allow-Origin:允許的來(lái)源
Access-Control-Allow-Credentials:設(shè)置為true,允許ajax異步請(qǐng)求帶cookie信息
Access-Control-Allow-Headers:設(shè)置為x-requested-with,content-type,允許ajax余部請(qǐng)求。
也沒有任何作用,報(bào)錯(cuò)依舊。
后面在想是不是后端的nodejs配置問(wèn)題。
將本地調(diào)試網(wǎng)址加入白名單
//關(guān)閉csrf
config.security = {
csrf: {
enable: false,
ignoreJSON: true
},
// 白名單
domainWhiteList: [ 'http://localhost:8080' ]
};
沒有任何作用,報(bào)錯(cuò)依舊。
后面查到資料
config.cors = {
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
};
#根據(jù)情況我只開啟下面的請(qǐng)求方式
config.cors = {
allowMethods: 'GET,POST,OPTIONS',
};
也沒有作用。
在文章下面有網(wǎng)友評(píng)論說(shuō),請(qǐng)確定是否開啟了 egg-cors 插件。
exports.cors = {
enable: true,
package: 'egg-cors',
};
如果提示沒有安裝,請(qǐng)安裝一下。
cnpm i --save egg-cors
哈哈,起作用了。原來(lái)是沒有加載插件,太好了,一直困惑的問(wèn)題終于解決。