首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“无法在已发布的Web API上发布数据”- 405 (不允许使用方法)

“无法在已发布的Web API上发布数据”- 405 (不允许使用方法)
EN

Stack Overflow用户
提问于 2019-06-24 22:12:25
回答 2查看 558关注 0票数 0

我正在使用angular 7,当我从本地机器上发布数据到web api时,它可以工作,但当我在服务器上发布相同的web api时,我可以从api获取数据,但我不能发布数据。我收到CORS错误。

WEB API在服务器端的发布面临着这样的问题。

我已经安装了CROS nuget包,但我仍然不能解决问题。

我尝试过修改web api,还安装了CORS包,还尝试过在Angular中进行代理配置,但它不起作用。

错误:“已被CORS策略阻止:请求的资源上不存在'Access-Control-Allow-Origin‘标头。”

代码语言:javascript
复制
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
  </customHeaders>
</httpProtocol>
EN

回答 2

Stack Overflow用户

发布于 2019-06-27 21:27:45

我已使用"proxy.conf.js“insted of (proxy.conf.json)文件解决了问题。在src文件夹中创建"proxy.conf.js“文件。并在"proxy.conf.js“中编写如下代码。

代码语言:javascript
复制
var HttpsProxyAgent = require('https-proxy-agent');
var proxyConfig = [{
  context: '/api',
  "target": "http://10.1.5.13:9007",
  secure: false
}];

function setupForCorporateProxy(proxyConfig) {
  var proxyServer = process.env.http_proxy || process.env.HTTP_PROXY;
  if (proxyServer) {
    var agent = new HttpsProxyAgent(proxyServer);
    console.log('Using corporate proxy server: ' + proxyServer);
    proxyConfig.forEach(function(entry) {
      entry.agent = agent;
    });
  }
  return proxyConfig;
}

module.exports = setupForCorporateProxy(proxyConfig);

并将"angular.json“文件更改为

代码语言:javascript
复制
"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "AngularTestApp:build",
            "proxyConfig": "src/proxy.conf.js"
          }

Run NPM start after doing all changes.
票数 0
EN

Stack Overflow用户

发布于 2019-06-24 23:04:26

为Google Chrome浏览器下载此CORS browser extension,并在访问本地主机时启用CORS。它应该可以解决这个问题。

您可以阅读有关此错误原因的更多信息here

可能导致此问题的事情:

从本地服务的文件命中服务器的API (来自file:///YourApp/index.html的请求http://api.awesome.com)

  • Hitting外部API (来自http://api.awesome.com).

  • Hitting的请求http://api.yourapp.com).

  • Hitting内部API )(来自http://localhost:4000)

  • Requesting的请求http://api.awesome.com).

  • Hitting同一主机上的不同端口( http://localhost:3000https://yourapp.com上,API是https上的http://localhost:4000)

  • Requesting,反之亦然)(来自http://yourapp.com)

的请求https://yourapp.com

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56738448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档