当前位置: 首页 > 面试题库 >

为什么要添加额外的标头使AJAX调用失败

冯澄邈
2023-03-14
问题内容

AJAX通话:

$.ajax({
    url: "http://myserver2:296/api/Demo/HelloWorld",
    type: "GET",
    dataType: 'JSONP',
    jsonp: "callback",
    headers: { 'API_KEY': 'mykey09090' },
    success: function (result) {
        console.log(result);
    },
    error: ajaxFailed
});

function ajaxFailed(xmlRequest) {
    alert(xmlRequest.status + ' \n\r ' +
          xmlRequest.statusText + '\n\r' +
          xmlRequest.responseText);
}

我收到以下错误:Failed to load resource: the server responded with a status of 403 (Forbidden)。但是,当我使用Postman时,我只需要添加带有http://myserver2:296/api/Demo/HelloWorldurl
的标头即可返回字符串。

请给我一些帮助,以解决问题。

我的目标是允许原始服务器以及正确提供的API密钥从Web Api取回数据。


问题答案:

API_KEY在请求中添加标头会触发您的浏览器首先发送CORS预检OPTIONS请求。除了定义为CORS安全列出的请求标头的标头之外,添加到请求中的 任何
标头都将触发您的浏览器发送CORS预检OPTIONS请求。

我不能肯定地说,但是您看到的403似乎是服务器响应该OPTIONS请求,并说它不希望收到OPTIONS请求并且不允许它们。

您没有从Postman获得此信息的原因是,与浏览器引擎不同,Postman不实现CORS,因此它不发送OPTIONS请求。(Postman不在浏览器为Web应用程序实施的相同来源的Web安全模型下运行。)

因此,要使您的客户端应用程序按预期的方式工作以对该服务器的脚本式跨域访问,必须将服务器配置为以正确的方式响应CORS预检OPTIONS请求。



 类似资料:
  • 问题内容: 当我尝试在套接字上使用sax解析xml时,遇到了一种奇怪的情况。经过分析,我注意到DataOutputStream在我的数据前面添加了2个字节。 DataOutputStream发送的消息: 使用Transformer发送消息: 可能已经注意到,DataOutputStream在消息前面添加了两个字节。因此,sax解析器将引发异常“ org.xml.sax.SAXParseExcept

  • 问题内容: 我有一个带有某些样式的简单html页面,但我不明白为什么会增加一些顶部边距? 来源如下: 如果我添加“ margin-top:0;” 到了空间已经消失了……但是直到我明白为什么我才感到不高兴。 问题答案: 上的空白来自浏览器添加到元素的默认样式。例如,如果您打开的并检查元素,您将看到这样的样式。该用户代理样式表是指浏览器默认样式。保证金变成16px为浏览器有一个默认。 由于浏览器之间的

  • 问题内容: 我已经开发了一个Restfull应用程序,我想添加另一个Web应用程序来使用其服务,因此我进行了以下Ajax调用: 我得到这个例外: 对象{readyState:0,状态:0,statusText:“ SyntaxError:无法执行’setRequestHeader’…-Origin: ‘不是有效的HTTP标头字段名称。”}错误DOMException:无法在’XMLHttpRequ

  • 下面的代码拆分数据,应用正则表达式,然后再次连接字符串(有一部分删除了单词之间的新行,因为我希望在单个块/行中输出段落): 输入: Lorem ipsum dolor坐在一起 Ipsum dolor sit amet,consetetur eirmod tempor invidunt ut laboure 代码: 我认为输入将是: 但不是,而是: 原因可能是什么?

  • 我正在检查Angular Bootstrap UI,特别是服务并注意到一件有趣的事情。 在他们的示例中,'http://plnkr.co/edit/e5xykpqwytsljua6fxwt?p=preview',在附加到弹出窗口的控制器中,他们将选定的项包含到另一个内部属性中 为什么需要这个?JavaScript找到了什么? THX

  • 当我使用对我的数组进行排序时(此数组包含指向整数的指针),一个额外的(一个新元素)似乎被添加到数组中。我几乎可以肯定问题出在或中,因为在调用之前打印我的数组时,数据是正确的(只是未排序)。这是代码。 输出应该包含未排序的数组、已排序的数组,以及是否找到了查询。未排序的数组中没有,但排序后的数组中有一个;此外,排序结果中缺少编号(有趣的是,如果我对执行二进制搜索,它会告诉我位于索引)。 输出示例(用