实际上我需要使用节点js更新方法更新到数据库,但我已经尝试了很多方法,但由于它不起作用。
这就是我所尝试过的..
private getHeaders(){
let headers = new Headers();
headers.append('Accept', 'application/json');
return headers;
}
updateMethod(params : any,url : string){
//var content = new URLSearchParams();
// let searchParams = new URLSearchParams();
params.url = url;
/* for (let param in params) {
searchParams.set(param, params[param]);
}*/
/*let apiHeaders = new Headers({ 'Accept' : 'application/json','Content-Type': 'application/json',"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS" });
apiHeaders.append('Method', 'PUT');
apiHeaders.append('Content-Type', 'application/json;charset=UTF-8');
apiHeaders.append('Access-Control-Allow-Credentials',"true");*/
//console.log(searchParams);
return this.http
.put(this.baseUrl+"api/update", JSON.stringify(params), {headers: this.getHeaders()})
.map(res => res.json());
}
//Update Method
router.put('/api/update', function(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
var params = {};
for(var keyName in req.body){
if(keyName != "url"){
params[keyName] = req.body[keyName];
}
}
console.log(params);
//Update Api Call
request.put(
baseUrl + req.body.url,
{ json: params },
function (error, response, body) {
if (!error && response.statusCode == 200) {
res.send(body);
}else{
if(error == null){
res.send(false);
}else{
res.send(error);
}
}
}
);
});
我每次都会收到此错误:
XMLHttpRequest无法加载http://localhost:8081/api/update。方法 预检中的Access-Control-Allow-Methods不允许PUT 响应。
请给出任何解决方案..
答案 0 :(得分:1)
如果你使用express,我更喜欢包含这个lib,以启用CORS
const cors = require('cors');
const app = express();
app.use(cors());
请注意:在声明路由器之前或在路由器文件中放置app.use(cors());
const cors = require('cors');
router.put('/api/update', cors(), function(req, res) {});