javascript - 如何解决从 javascript 中的不同 url 获取 json 数据的跨域问题?
问题描述
我正在尝试从 URL 获取 JSON 数据,但它给了我一个错误(Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://core.agricx.com/api/Apiagricx/get_config_test。(原因:CORS 标头“Access-Control-Allow-Origin”缺失)。
后端代码(节点 js)
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
前端代码(dashboard.js)
fetch('https://core.agricx.com/api/Apiagricx/get_config_test', {
method: "GET",
credentials: "include",
cache: "no-cache"
})
.then(response => response.json())
.then(out => {
console.log("for out");
console.log(out);
})
.catch(err => {
console.log("for err");
console.error(err);
});
我希望您可以在直接输入 URL 时看到 JSON 数据输出。但是代码将进入 catch 块并阻止我从该 URL 获得的响应。
解决方案
一个简单的方法是使用 node.js 包cors
。
安装包,并在您的或任何您的节点代码cors
的开头包含以下代码。server.js
var cors = require('cors')
var app = express()
app.use(cors())
有关更多详细信息和配置选项,请参阅相关的 npm 页面。
推荐阅读
- javascript - WooCommerce 迷你购物车在靠近时闪烁?
- php - 无法使用 Vue-CLi 2 访问受保护的 Laravel 5.6 API 端点
- mysql - 如何防止对 findByName 方法的并发请求?
- r - R拟合双指数增长曲线
- c# - Foreach datagridview 行不起作用
- angular - 您可能需要适当的加载程序来处理这种文件类型 asp.net core2.0 angular
- python - 将列表转换为 Pandas 系列时出现 KeyError
- performance - 为什么 DigitalOcean 使用 uuid 作为用户 ID,使用整数作为 Droplet id?
- windows - 为什么在 Windows 10 上运行 docker 时,bash 中的字符串末尾会添加“;C”?
- c# - 当有特殊名称的名称时,如何通过 Json.net 解析 JSON 数据?