gpt4 book ai didi

javascript - 阻止在 Heroku 上加载 HTTP 混合内容

转载 作者:行者123 更新时间:2023-11-30 00:25:37 24 4
gpt4 key购买 nike

我正在使用 Node.js 和 Express 创建一个网络应用程序。当我尝试将我的项目上传到 Heroku 时,我的所有内容都成功加载到页面上,但是当我尝试执行任何需要对我正在使用的 API 进行 AJAX 调用的操作时,我收到错误消息:

Mixed Content: The page at 'https://farmers-market-finder.herokuapp.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=94118. This request has been blocked; the content must be served over HTTPS.

我正在使用美国农业部制作的农贸市场数据 API,并遵循他们建议的 RESTful AJAX 请求格式:

 $.ajax({
type: 'GET',
url: 'http://search.ams.usda.gov/farmersmarkets/v1/data.svc/mktDetail?id=' + id,
async: false,
success: function (data) { ... }
})

我在 Stack Overflow 和其他网站上针对此混合内容错误进行了大量研究。大多数答案表明,“GET”请求路由需要更改为“https://...”才能在 Heroku 的 https 服务器上工作。我尝试切换它,但是到 API 的路径不再有效;我收到 404 Not Found 错误。我也尝试将我的路线切换到相对链接(只写 url: '//search.ams...'),但得到了相同的 404 错误。似乎我确实需要一个 http://链接来访问我正在尝试访问的 API。

有谁知道让 Heroku 允许我使用“http”链接而不是 https 或其他某种方式来成功发出请求的方法吗?

最佳答案

在您的 server.js 文件中,将此代码添加到其他 app.use 语句之上。 (App = expr

app.use(function (req, res, next){
if (req.headers['x-forwarded-proto'] === 'https') {
res.redirect('http://' + req.hostname + req.url);
} else {
next();
}
});

关于javascript - 阻止在 Heroku 上加载 HTTP 混合内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31552088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com