我使用firebase函数创建了一个GET请求。我可以使用Postman接收数据,但不能从我的FE应用程序接收数据。
当访问端点时,我得到这个错误
from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
My FE Code,
pay() {
this.http.get(this.settings.createPaymentRequest).subscribe(res => {
console.log(res);
})
}
服务器代码,
exports.createRequest = functions.https.onRequest((req, res) => {
const cors = require('cors')({
origin: '*'
});
...
var options = {
method: 'POST',
uri: 'https://test.instamojo.com/api/1.1/payment-requests/',
form: payload,
headers: insta_headers,
json: true
};
return rp(options)
.then(function (response) {
console.log(response);
if (response.success) {
db.collection('PAYMENT_REQUESTS').doc(response.payment_request.id).set({
LONG_URL: response.payment_request.longurl,
REQUEST_CREATED_AT: response.payment_request.created_at,
PAYMENT_STATUS: "STARTED"
}, {
merge: true
}).then(function () {
response.setHeader(headers);
res.status(200).send({
STATUS: "SUCCESS",
RESPONSE: response.payment_request.longurl
});
})
.catch(function (error) {
res.status(200).send({
STATUS: "ERROR",
RESPONSE: error
});
});
} else return res.status(403).send('Forbidden!');
})
.catch(function (e) {
console.log("ERROR" + e);
res.status(200).send({
STATUS: "ERROR",
RESPONSE: e
});
});
});
请指导我如何解决这个问题。
看起来你创建了这个
const cors = require('cors')({
origin: '*'
});
但不要将其注入任何地方(除非它是...
的一部分)
应该有这样的东西
app.use(cors())
(或者你的框架怎么做)
在再次尝试使用浏览器之前,您可以检查postman中的响应头,看看您正在寻找的cors头是否存在:
像这样:
Access-Control-Allow-Origin: *