我正在尝试从同一域上的 API 加载一些数据。您可以在 http://bwq.aintno.info/adc_temp 找到该示例。 。请求在页面加载时启动,因此如果您查看控制台,您会发现请求失败。但是,如果我自己在浏览器中访问链接 ( http://bwq.aintno.info/ads/api/index.php/specimens ) 或使用 Postman 执行 GET 请求,它会很好地返回 JSON。这是我的 .htaccess 文件的内容:
Header set Access-Control-Allow-Origin "*"
有人知道如何解决这个问题吗?预先感谢您的帮助。
最佳答案
根据您的评论,我知道您使用了广告拦截器。
广告拦截器的问题是,它们通过匹配规则进行拦截,无论是通过 url 还是通过某些 dom 结构(如 class
名称或 id
) >s)。
一般来说,如果您的浏览器出现问题,请在禁用所有扩展的情况下进行测试。这可以(在大多数情况下)通过使用隐私模式来完成,因为许多坏扩展在该模式下被禁用。或者使用未安装扩展的配置文件。
如果一切正常,那么它很可能是一个干扰扩展。
在您的情况下,问题在于网址:
http://bwq.aintno.info/ads/api/index.php/specimens
^________^
对于这部分,有一个匹配规则,例如EasyList
(.info/ads/
) - 其他列表中很可能也有类似的规则。
因此,一般来说,诸如 ads
(或类似内容)之类的内容在之前或之后带有分隔符很可能会被屏蔽。
不仅广告拦截器会导致页面出现问题,还有其他扩展可能会导致页面损坏,因此您需要再次检查修改 dom 的常用扩展(我知道这不是一个好消息)。
但是你绝对应该根据过滤器列表检查你的 url,并且你也可以考虑根据它检查你的 dom。或者至少避免使用听起来像广告的网址或class
和id
。
有一件事我目前不知道,但现在让我有点担心的是,easy 列表中的规则是 .info/ads/
。在我看来,像 script?param=.info/ads/
这样的请求也可能被阻止。好吧,无论如何这应该被转义,但我认为我需要在我的工作流程中添加一些额外的测试。
关于jQuery GET 到同一域上的 API 会出现 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17361434/