提问者:小点点

newsapi.org API和JQuery存在问题[重复]


我将收到以下错误消息:

加载资源失败:服务器响应状态为426(需要升级)“使用JQuery从https://newsapi.org/v2/top-headlines?country=in&apikey=....使用proxy-https://cors-anywhere.herokuapp.com/在ngrok托管的https站点和本地主机上获取结果时出错。

但是如果我使用http而不是https,也就是https://cors-anywhere.herokuapp.com/https://newsapi.org/...并使用http ngrok站点。

这是如果我使用http-

{状态:“Error”,代码:“CorsnotAllowed”,…}代码:“CorsnotAllowed”消息:“开发人员计划中不允许通过浏览器进行请求,除非来自本地主机。”状态:“错误”}

有解决办法吗?这个错误会发生吗?我使用我的域和ssl正确地托管它?


共1个答案

匿名用户

您试图访问的API不接受来自网站的请求(除localhost)。如果浏览器遇到一个跨源请求,它会尝试发出一个飞行前请求(一个询问服务器的初始请求,可以从这个远程地址获取,它与当前域不同)。如果没有使用成功消息响应预飞行请求,则Ajax请求失败。这种行为称为CORS,它必须得到API的支持。

您的API似乎不允许,即它实际上显式禁止CORS请求。如果API希望强制开发人员在服务器端发出请求,通常会这样做。这样做的好处是,访问密钥不会与JavaScript代码一起发送给网站的访问者,而是保留在服务器上。

尝试在您的服务器上发出请求,然后从您自己的服务器将数据发送到您的前端。这还允许使用您自己的身份验证。您也可以到处使用CORS这样的web服务,但是请记住,该服务可以访问您正在发送和接收的所有数据(并且它能够双向修改数据)。