当后端托管在 Azure 上时,create-react-app 代理请求失败并显示 404

2024-06-04

我在设置 create-react-app 应用程序来代理对 Microsoft azure 上的测试托管的请求时遇到了一些麻烦。我在应用程序的 package.json 中设置了代理,如下所示:

"proxy":{
   "/api/*":{
   "target":"https://mytestbackend.azurewebsites.net",
   "secure":false
}
}

我已经设置了一个 axios 请求发送到 azure 上的后端服务器。它位于一个独立的 .js 中,我从我的 React 应用程序的事件之一中调用它。它看起来像这样:

import axios from 'axios';

const login = async (username, password) => {
   console.log("Username to send is:"+username);
   console.log("password to send is:"+password);
   let response = await axios.post('/api/user/login',  {username:username,password:password});
   console.log(response);
};

export {login};

问题不可能出现在我的反应组件中,因为这两个 console.log() 调用显示正在接收输入的值。如果我从 package.json 中删除“secure”:false 设置,则请求会失败并显示 Http Error: 500。但是如果我使用 secure 设置,则会失败并显示 404 页面。有人可以解释一下我做错了什么吗?我只能在“localhost”上使用代理吗?文档另有说明。任何帮助是极大的赞赏。

我已验证在 Azure 管理门户上运行开发服务器的域已启用 CORS。如果我直接使用后端的 URL 来执行请求(即不使用 create-react-app 代理),它就会起作用。问题一定出在代理的配置方式上。

不使用安全时发生的 HTTP 错误 500 的响应文本是:

Proxy error: Could not proxy request /api/user/login from localhost:3000 to https://mytestbackend.azurewebsites.net (undefined).

附加信息:我还通过在我的开发计算机上本地运行我的后端进行了测试。出现错误消息,但括号中的“未定义”显示“UNABLE_TO_VERIFY_LEAF_SIGNATURE”。如果使用“secure: false”,我可以成功调用登录端点,但调用其他需要身份验证的端点会失败,因为 cookie 不是由 axios 发送的。

正在做: 卷曲-vhttps://mytestbackend.azurewebsites.net/api/user/login https://mytestbackend.azurewebsites.net/api/user/login

有这个输出:

* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection #0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

create-react-app use WebPackDevServer它使用https://github.com/chimurai/http-proxy-middleware#options https://github.com/chimurai/http-proxy-middleware#options

所以你可以使用同一个选项中的所有选项

现在一键header在外部托管服务器的这种情况下,重要的是host。如果不正确,有时会出现问题,请参见下面的示例

Websocket 适用于 EC2 url,但不适用于 ElasticBeanstalk URL https://stackoverflow.com/questions/46023286/websocket-works-on-ec2-url-but-not-on-elasticbeanstalk-url/46043787#46043787

接下来是可能关联的 cookielocalhost,我检查过,它们应该没有任何修改。但您可能想使用cookieDomainRewrite: ""也有选项

所以我将使用的最终配置如下

"proxy":{
   "/api/*":{
   "target":"https://mytestbackend.azurewebsites.net",
   "secure":false,
   "headers": {
     "host": "mytestbackend.azurewebsites.net"
    },
    "cookieDomainRewrite": ""
  }
}

另外,在您的客户端上您想使用withCredentials:true

let userinfo =await axios.get('/api/secured/userinfo',{withCredentials:true});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当后端托管在 Azure 上时,create-react-app 代理请求失败并显示 404 的相关文章

随机推荐

  • ASP.NET MVC3 绑定到子类

    我有一个类型的超类Question它有多个子类 例如选择题 and 文本问题 每个子类都有自己的编辑器模板 例如 共享 EditorTemplates MultipleChoiceQuestion cshtml 我想做的是创建一个列表Que
  • 在进程完成之前,Windows cmd.exe 中的管道不会转发标准输出?

    考虑 Windows 命令 shell cmd exe 中的管道 C gt feed filter 直到进料过程运行完成之后 进料过程的标准输出似乎才达到过滤过程的标准输入 这种类型的 缓冲 可能会导致长时间运行的馈送过程的输出消息出现烦人
  • 使用 rtmp 和 videojs 流式传输视频

    我正在寻找一种使用 rtmp 流播放视频的方法 我使用 video js 但它不起作用 Firebug 返回错误 L attribut type sp cifi sur video flash n est pas g r Le charge
  • 使用 DEF 文件而不是 LIB 文件链接到 DLL?

    我了解到你可以 将 DLL 文件转换为 DEF文件 其中包括其导出 编辑 这不适用于许多约定 转换一个 DEF文件转换为 LIB 文件 您可以使用该文件链接到 DLL 为什么 大多数 链接器不能链接到给定的 DLLonly DEF 文件 而
  • 当视图控制器被带到视图堆栈的顶部时,如何让它运行更新代码?

    我有一个 viewController Planner 它在应用程序启动时加载两个视图控制器 InfoEditor 和 MonthlyPlan MonthlyPlan 隐藏在 InfoEditor 后面 加载时 所以我的问题是 当我将 In
  • git fetch 的默认远程

    如果我在当地的分支机构not跟踪任何远程分支 我发出命令 git fetch 鉴于我定义了几个遥控器 GIT DIR config 从哪个远程获取 我试图从man page https www kernel org pub software
  • golang中默认的HTTP拨号超时值

    我正在运行 golang http 客户端来对服务器进行压力测试 有时我会收到错误 拨号 tcp 161 170 xx xxx 80 操作超时 错误 我认为这是 HTTP 客户端超时 我正在考虑增加超时值https stackoverflo
  • QGIS 和 PostGIS(地图点(美国地图上的纬度和经度以及半径)

    我安装了QGIS和PostGIS 我想在美国地图上以 100 英里为半径显示 200 个点 我已将纬度和经度导入 PostGIS 数据库中 所以我有三个字段 地址 纬度 经度 1 我需要将纬度和经度字段转换为点或几何字段吗 如果是这样怎么办
  • 哪些浏览器支持 HTML5 WebSocket API?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我将开发一个在浏览器中运行的即时消息应用程序 哪些浏览器支持WebSocket API
  • python:无效的数据类型(0)(SQLBindParameter)

    我正在使用 python 2 7 来完成特定的工作 我正在使用 FreeTDS 连接到 MSSQL Server 2008 我可以进行一些简单的选择查询 但是当我尝试运行参数化查询时 出现错误 HY004 HY004 FreeTDS SQL
  • EF Core 模型构建约定

    在 EF6 中 可以在模型构建期间根据属性类型定义约定 就像这样 public interface IEntity Guid Id get public class MyEntity IEntity public Guid Id get s
  • UIPinchGestureRecognizer在水平和垂直方向分别的缩放

    使用 UIPinchGestureRecognizer 时 分别检测 读取水平和垂直方向上的捏合比例的最佳方法是什么 我看到了这个帖子 UIPinchGestureRecognizer 不同 x 和 y 方向的缩放视图 https stac
  • 自动将其更改值提交给域对象的 Wicket 复选框

    我可以使复选框自动提交其在 Wicket 中所属的表单的最简洁方法是什么 我根本不想包含提交按钮 该复选框由域对象 本例中为 帐户 中的布尔字段支持 省略不相关部分的简化示例 EntityModel
  • obfuscar 可以与 Blazor WebAssembly 一起使用吗

    我使用想要混淆的代码创建了 Blazor WebAssembly obfuscar 工具运行良好 但是当我用混淆后的 dll 替换原始 dll 时 我的网站无法加载 开发工具显示以下错误 无法在资源 https dll 的 完整性 属性中找
  • 在哪里存储 asp.net mvc 项目的图像以及如何从 site.master 引用它们

    我有一个新的 asp net mvc 项目 我正在尝试找出存储图像的最佳位置 以及如何从 site master 引用它们 如果我有一个标题图像 我想显示在所有页 建议或最佳实践 我通常做的是在我的内容文件夹中创建一个 图像 文件夹 只要保
  • WebActivator PreApplicationStartMethod 不起作用

    我正在按照 onin 架构制作一个新项目 我有一个名为 bootstrapper 的单独项目 其中包含 IOC 和 WebActivator 我的问题是包含 WebActivator 的类甚至没有在调试中加载 也许我错过了什么 assemb
  • 3D 透视投影的剪辑矩阵

    我正在尝试创建一个简单的 3D 图形引擎 并找到并使用了我在这里找到的方程 http en wikipedia org wiki 3D projection cite note 0 http en wikipedia org wiki 3D
  • 计算Java对象的字节大小[重复]

    这个问题在这里已经有答案了 我正在计算 java 对象 hashmap 的大小 使用的内存 它 在运行时 包含不同数据类型的元素 因此 no of elem size of element 并不是一个好的方法 现在的代码是通过一系列的 if
  • 为什么 Runnable 的 run() 不能抛出检查异常?

    根据第 6 3 2 节JCIP http jcip net Runnable 是一个相当有限的抽象 run 不能返回值或抛出检查异常 run 不能返回值 因为它的返回类型是 void 但为什么它不能抛出检查异常 它不能抛出检查异常 因为它没
  • 当后端托管在 Azure 上时,create-react-app 代理请求失败并显示 404

    我在设置 create react app 应用程序来代理对 Microsoft azure 上的测试托管的请求时遇到了一些麻烦 我在应用程序的 package json 中设置了代理 如下所示 proxy api target https