javascript - 重定向 URL 不起作用并获得 No 'Access-Control-Allow-Origin' 标头错误
问题描述
我正在尝试从我的应用程序向 Nodejsserver 发送 Ajax 请求,但收到此错误
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我正在使用 ajax 调用向服务器(nodejs)发送请求,服务器反过来将返回 url ,在成功函数中,应该重定向服务器发送的 url。
//nodejs app.js
var express = require('express');
var app = express();
var cors = require('cors');
var link= require('./routes/link');
app.use('/quote', link);
app.use(cors());
module.exports = app;
//link.js
var express = require('express');
var app = express();
var cors = require('cors');
var router = express.Router();
router.get('/', function (req, res) {
res.send({ redirectUrl: "https://www.google.com" });
});
module.exports=router;
//frontend
$.ajax({
method: 'get',
url: '/quote',
data: {
id: "1",
cn: "IN",
},
success: function (result) {
window.location.href = result.redirectUrl; // url got from server
},
error: function (request, status, error) {
console.log(request.error);
}
});
解决方案
您可以自定义 cors 而不是app.use(cors());
这样:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "*");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
next();
});
让我们试试。
推荐阅读
- java - 无法通过 idex 单击突出显示的元素
- c# - 如何在 dotnet Core web api 中设置大写键值
- python - Flask Marshmallow 用额外字段序列化多对多关系
- oracle - Oracle - 完整 DB 11g 数据库的 Impdp 期间出错
- javascript - 使用 JavaScript 生成唯一的按钮 ID
- css - 图像大于其父级:Edge 上的居中问题
- angular - Docker中的Nginx:位置配置不起作用
- javascript - 遍历 json 对象以获取键作为列名
- c# - 有没有办法从 C# 中的 URI 创建 Halcon 图像(HImage)?
- php - PHP:如果键具有特定值,则递归地将数组转换为字符串