当服务器返回HttpStatus 200 OK时,不确定为什么javascript获取调用失败

当服务器返回HttpStatus 200 OK时,不确定为什么javascript获取调用失败,javascript,fetch,fetch-api,Javascript,Fetch,Fetch Api,我有一个SPA客户端应用程序正在对本地主机Web服务器进行REST调用。我使用javascript进行调用,并使用fetch()进行调用 我的响应是HttpStatus 200(我可以通过查看XHR请求/响应逐步查看我的Web服务器代码,并使用Chrome开发工具确认这一点) 我正在做一个HTTP POST(到我的web服务器) 响应是Http 200 OK(不是创建的201) 在任何人开始在返回200>的帖子上纠正我之前,这是一个登录/身份验证端点,因此是200,而不是201 那么,有没有办法

我有一个SPA客户端应用程序正在对本地主机Web服务器进行REST调用。我使用javascript进行调用,并使用
fetch()
进行调用

我的响应是HttpStatus 200(我可以通过查看XHR请求/响应逐步查看我的Web服务器代码,并使用Chrome开发工具确认这一点)

我正在做一个HTTP POST(到我的web服务器) 响应是Http 200 OK(不是创建的201)

在任何人开始在返回200>的帖子上纠正我之前,这是一个登录/身份验证端点,因此是200,而不是201

那么,有没有办法让我知道fetch为什么要这么做

更新:所以当我使用Chrome时,响应说:
加载响应数据失败
。但是如果我使用(程序)Postman做同样的帖子,那么我会得到一个回复体

这是我的密码

export function authenticateUser(idToken) {

    var formData = new FormData();
    formData.append('idToken', idToken);

    fetch('https://localhost:44387/authentication',
            {
                method: 'POST',
                body: formData
            })
        .then(handleErrors)
        .then(response => console.log("ok"))
        .catch(error => console.log(error));
}

export function handleErrors(response) {
    if (!response.ok) {
        throw Error(response.statusText);
    }
    return response;
}

编辑#1:
  • 根据请求添加了
    handleErrors
    代码
编辑#2:
  • 在Chrome开发工具中添加了
    Response
    选项卡

该死-答案是
CORS
::我的Web服务器上没有
CORS
设置

线索:

  • 使用
    Postman
    测试我的端点,它100%有效
  • @sideshowbarker的评论建议我质疑
    CORS
通过快速的谷歌搜索,我发现:

浏览器安全性防止网页向另一个域发出AJAX请求。此限制称为同源策略,用于防止恶意站点从其他站点读取敏感数据。但是,有时您可能希望让其他站点调用您的web API

跨源资源共享(CORS)是一种W3C标准,它允许服务器放宽同源策略。使用CORS,服务器可以显式地允许一些跨源请求,同时拒绝其他请求


什么是“同源”

如果两个URL具有相同的方案、主机和端口,则它们具有相同的源。(RFC 6454) 这两个URL具有相同的来源:

这些URL的来源与前两个不同:

  • -不同领域
  • -不同的端口
  • -不同的方案
  • -不同子域
因此,在我的场景中,我有:

  • 前端/水疗中心:
  • 后端/REST端点:
那么,什么是差异


  • Scheme
    http
    vs
    https
    该死-答案是
    CORS
    ::我的Web服务器上没有设置
    CORS

    线索:

    • 使用
      Postman
      测试我的端点,它100%有效
    • @sideshowbarker的评论建议我质疑
      CORS
    通过快速的谷歌搜索,我发现:

    浏览器安全性防止网页向另一个域发出AJAX请求。此限制称为同源策略,用于防止恶意站点从其他站点读取敏感数据。但是,有时您可能希望让其他站点调用您的web API

    跨源资源共享(CORS)是一种W3C标准,它允许服务器放宽同源策略。使用CORS,服务器可以显式地允许一些跨源请求,同时拒绝其他请求


    什么是“同源”

    如果两个URL具有相同的方案、主机和端口,则它们具有相同的源。(RFC 6454) 这两个URL具有相同的来源:

    这些URL的来源与前两个不同:

    • -不同领域
    • -不同的端口
    • -不同的方案
    • -不同子域
    因此,在我的场景中,我有:

    • 前端/水疗中心:
    • 后端/REST端点:
    那么,什么是差异


    • Scheme
      http
      vs
      https
      您能显示更多的代码吗?
      handleErrors
      函数中发生了什么?浏览器是否将任何消息记录到devtools控制台?这是一个跨源请求吗?“这不是CORS问题吗?”sideshowbarker不知道这是不是CORS问题。我如何检查/告知?SPA应用=(注:http)
      http://localhost:3000/#
      server=(注意:https)
      https://localhost:44387/authentication
      响应。手上的ok
      错误看起来可疑。你确定它包含你认为它包含的内容吗?(例如,您真正要查找的可能是
      response.data.ok
      或类似内容)@ippi-hmm。它直接指向第164行。是否进入
      handleErrors
      ?可能我使用的
      fetch()
      不正确:~(你能显示更多的代码吗?在
      handleErrors
      函数中发生了什么?浏览器是否将任何消息记录到devtools控制台?这是一个跨源请求?不是CORS问题?@sideshowbarker不知道这是否是CORS问题。我如何检查/告知?SPA app=(注意:http)
      http://localhost:3000/#
      server=(注意:https)
      https://localhost:44387/authentication
      响应。手上的ok
      错误看起来可疑。您确定它包含您认为它包含的内容吗?(例如,您真正要查找的可能是
      响应。数据。ok
      或类似内容)@ippi嗯。它直接指向第164行。是否进入
      句柄错误
      。?可能我使用的
      fetch()
      不正确:~(