javascript - 访问 .json 文件导致银行假期访问被拒绝

标签 javascript jquery json

我对 jQueryjson 非常陌生。我正在尝试从以下 API/链接获取英国银行假日数据,以便我可以创建一个函数来确定所选日期是否为工作日。

https://www.gov.uk/bank-holidays.json

我遇到了No Transport错误,我通过输入以下内容修复了该错误:

jQuery.support.cors = true;

我现在收到访问被拒绝的消息。我不知道如何访问此内容,因为正如我所说,我仍在学习这一切。

function IsWorkingDay(date) {
  var day = new moment(value, "DD-MM-YYYY").day();
  jQuery.support.cors = true;
  var bankHolidays = $.getJSON("https://www.gov.uk/bank-holidays.json").done(function(data) {
                                                                                   alert(data);
                                                                                 })
                                                                           .fail(function(a, b, c) {
                                                                                   alert(b + ',' + c);
  return day != 0 && day != 6;
}
                                                                          });

我的问题分两个阶段:

  1. 我如何获得访问权限? (主要问题)
  2. 我如何继续访问数据?我已将 json 下载到我的计算机上查看,我正在努力解决如何将其转换为 javascript 的问题。

最佳答案

如果您被 CORS 阻止,并且该服务不支持 JSONP,解决该问题的最简单方法是为实际服务创建代理服务。因此,如果您在服务器上创建一个服务(与提供 JavaScript 的服务相同),您可以调用该服务,该服务又将从外部服务获取数据。在服务器端,无需担心 CORS。

我不知道你的后端是什么,但步骤如下:

  • 在您这边创建一个通过 URL 公开的服务(例如 /myapp/workingday)
  • 调用此服务而不是真正的服务
  • 您的代理服务将获取 JSON 数据并将其返回给 JavaScript

编辑

我不了解MVC4,但我怀疑它与Spring MVC有一些相同的概念,所以这里有一个Java示例:

@Controller
public class HolidaysController {

    @RequestMapping("/workingday")
    public void isworkingDay(@RequestParam("day") Date day, HttpServletResponse response) {
        // Call external service and get JSON
        String json = callExternalService(day);
        response.setContentType("application/json");
        response.getWriter().write(json);
    }
}

在你的 JavaScript 中:

function IsWorkingDay(date) {
    var day = new moment(value, "DD-MM-YYYY").day();
    var bankHolidays = $.getJSON("/workingday").done(function(data) {
        // process data
    });
}

关于javascript - 访问 .json 文件导致银行假期访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058905/

相关文章:

JavaScript 函数重写

javascript - 为什么 "message.channel.find"不是函数?

javascript - 在单选按钮中打开新选项卡窗口?

javascript - 获取组织结构图 : How to allign top level boxes and make orgchart grow down

ios - Swift:从 SwiftyJson 结果创建结果表

C# Linq JSON 嵌套数组的奇怪行为

javascript - 在 bootstrap-vue 中渲染自定义样式

javascript - 使用 focusout 和 focusin 以及 Click 事件时无法检测按钮按下情况

java - 仅在某些字段上使用 gson 反序列化 json 对象

Javascript 细粒度性能调整