当前位置: 首页 > 知识库问答 >
问题:

对XMLHttpRequest的访问已被CORS策略阻止

令狐晟
2023-03-14

当我尝试在角7网络应用程序中执行补丁请求时,我遇到了一个问题。在我的后端,我有:

app.use((req, res, next) => {
    res.set({
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "*",
        "Access-Control-Allow-Headers": "'Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token'",
    });

    next();
});

在我的前端服务中,我:

  patchEntity(ent: any, id) {
    let headers = new Headers({ 'Content-Type': '*' });
    let options = new RequestOptions({ headers: headers });
    return this.http.patch('my_url', ent).map((res: Response) => res.json());
  };

错误是:

Access to XMLHttpRequest at 'my_url' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

我能做什么?谢谢

共有3个答案

阎建中
2023-03-14

您的错误:

从源站访问位于'my\u url'的XMLHttpRequesthttp://localhost:4200'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。

我的错误:

CORS策略已阻止从源http://localhost:4200访问XMLHttpRequest:跨源请求仅支持协议方案:超文本传输协议,数据,chrome,chrome-扩展,https。

(虽然有点不同的错误,但我还是会回答)

现在有两个问题:

  1. 我是如何解决我的问题的?

答:在我使用的api之前加上“http://”表示http://localhost:3000/api/todo'.

答:不能肯定,但我没有看到你的api url,而是显示“我的url”(比较两个错误)。我想你可能传递了字符串而不是变量。

如果这对任何人都有帮助,我会很高兴的。因为这花了我将近2小时,现在已经是午夜了。

方宏才
2023-03-14

在节点中使用此选项

    app.use(function (req, res, next) {
    //Enabling CORS
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, 
    Accept, x-client-key, x-client-token, x-client-secret, Authorization");
      next();
    });

在角度上,请求是

 auth(login): Promise<any> {
 return new Promise((resolve, reject) => {
   this._http.post('url:3000/api/auth/login', { ...login })
     .subscribe((response: any) => {
       resolve(response);
     });
 });
}
羿宏硕
2023-03-14

有两种处理方法:

  1. 临时前端解决方案,以便您可以测试API集成是否正常工作:

点击窗口-

chrome.exe--user data dir=“C://chrome dev session”--禁用web安全性

这将打开一个新的“Chrome”窗口,您可以轻松工作。这是暂时的解决办法。每次你都必须使用这个铬窗口。

在后端代码中,开发人员需要在CRUD api调用方法的正上方添加注释@Crossorigin。

让我知道它是否有效。

 类似资料:
  • 我有一个。NET核心应用程序,它有一个REST API被一个角客户机使用,但遇到了CORS问题。 但仍在客户端(运行在本地端口4200上)中获取错误: CORS策略阻止从来源“HTTP://localhost:4200”访问位于“HTTP://localhost/myapi/api/table”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。

  • CORS策略已阻止CORS从源站对X处XMLHttpRequest的访问:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。 嗨,我正在努力解决我的问题与CORS拒绝我的Vue组件与外部API与axios的交互,因为它返回此错误。我尝试了使用Barryvdh的Cors头支持和制作中间件和自定义路由。这根本行不通。Barryvdh回购中README. md中提到的一切都已经完成,不幸的

  • 请求标头如下所示: 临时头显示为access-control-request-headers:content-type access-control-request-method:POST origin:http://localhost:4200 referer:http://localhost:4200/login user-agent:mozilla/5.0(Macintosh;Intel M

  • 交叉起源没有发生,被CORS策略阻止。 我使用的是Windows系统。 在文件中: 在文件中: 我在浏览器控制台中遇到此错误: CORS策略阻止了从http://localhost:1111/api/v1/employees/createhttp://localhost:4200对XMLHttpRequest的访问:对预飞行请求的响应没有通过权限改造检查:请求的资源上没有访问控制允许起源标头。<-

  • 我的应用程序最近收到一个错误 “在'https://my-service-domain/socket.io/?EIO=3 当我连接到 socket.io。我还没有找到这个问题的解决方案,我将详细描述如下图所示,是否有人遇到过此错误。 服务器配置: 客户端配置: 我试图切换webocket连接选项,我得到了错误 "WebSocket连接到'wss://my-service-field/socket.

  • 我有一个在Node开发的API。JS,打字稿听localhost:3001我有一个Angular的前端应用程序,打字稿听localhost:4200 我正在尝试使用ngx-image-cropper上传图像文件,将其转换为base 64,从前端到API。 当补丁(更新)http请求发送到API时,我得到: 访问位于'http://localhost:3001/member/10'从原点'http: