【问题标题】:Cannot execute PUT method on browser无法在浏览器上执行 PUT 方法
【发布时间】:2021-12-08 23:16:13
【问题描述】:

我正在训练创建一个 Angular 应用程序

好吧,当我从 Postman 调用 API 时,它可以工作 但是当我尝试在浏览器(firefox 或 chrome)上使用 HTTP.put 调用它时 我总是有这个错误

跨源请求被阻止:同源策略不允许读取位于 https://localhost:5001/api/users/set-main-photo/25 的远程资源。 (原因:在 CORS 标头“Access-Control-Allow-Methods”中未找到方法)。

跨源请求被阻止:同源策略不允许读取位于 https://localhost:5001/api/users/set-main-photo/25 的远程资源。 (原因:CORS 请求未成功)。

我做了一些研究,并使用拦截器将其添加到我的标题中 访问控制允许方法:GET、PUT、POST、DELETE、HEAD 访问控制允许来源:*

还是一样的问题

有什么帮助吗?

注意:HTTP.GET 和 HTTP.POST 工作正常 谢谢

【问题讨论】:

标签: angular cors


【解决方案1】:

我解决了这个问题

  app.UseCors(x => x
                .AllowAnyMethod()
                .AllowAnyHeader()
                .SetIsOriginAllowed(origin => true) // allow any origin
                .AllowCredentials()); // allow credentials

之前

 app.UseCors( x => x.AllowAnyHeader().AllowAnyHeader().WithOrigins("https://localhost:4200"));

谢谢

【讨论】:

  • 您允许使用凭据的任意来源。这是非常不安全的!您基本上是在将同源策略扔出窗外。你应该重新考虑。
  • 是的,但现在我在本地主机中,所以我认为没问题,我仍然在开发中,谢谢
【解决方案2】:

您在开始开发时遇到了一个常见问题。 由于安全问题,您在没有明确配置的情况下被限制跨域名调用。 根据您的 API,您可以允许任何来源调用它。

在您的请求本身上设置标头将不允许您绕过此限制,您需要配置 API。

你可以阅读 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 以获得更好的理解。

或者如上所述,上一篇文章也涵盖了该主题 https://stackoverflow.com/a/10892392/9994146

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2016-03-03
    相关资源
    最近更新 更多