Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – CORS – OPTIONS … 404(未找到)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我遇到CORS问题.

一般结构:

Angular 4将表单的数据发送到我的api.
当我发送有关表单联系人的信息时,将执行函数saveForm().

app.component.ts

saveForm() {

    let headers = new Headers();
    headers.append('Content-Type','application/json');
    let requestOptions = new requestOptions({ headers: headers });

    // Encode JSON as String to exchange data to web server.
    this.data = JSON.Stringify(this.myContact);

    this.http.post('https://pablocordovaupdated.herokuapp.com/api',this.data,requestOptions).subscribe(res => {
            let result = res.json();
            if(result['result'] == 'success') {
                this.successmessage = true;
            }
        }
    );

}

这是问题的根源,因为我正在使用POST和Content-Type-> application / json来发送我的数据,并且根据定义它给我一个CORS问题 – 预检请求,这里更多定义:Link about preflighted request

这意味着在角度4发送数据到服务器之前,这要求服务器是否可以用动词OPTION接收我的数据,如果服务器的响应是OK则则角度4发送格式的数据.

问题:

在控制台中我总是收到此错误消息:

做了什么:

到目前为止,我理解这个问题是因https://pablocordovaupdated.herokuapp.com/api没有返回动词选项的答案

然后我尝试解决这两种方式:

使用COrs包CORS package
我根据文档配置.

var express = require('express');
var cors = require('cors');
...
var app = express();
...
app.options('/api',cors());
app.post('/api',cors(),function(req,res,next) {

    // Proccess to send this data via email
    // and also save in data base(only for learning)

});

但我在控制台遇到同样的错误.

Discussion StackOverFlowDiscussion Github之前手动配置标头

在我的情况下,该代码插入到我想要编写标题的每个路径中:

app.post('/api',next) {

    if (req.method === 'OPTIONS') {
          console.log('!OPTIONS');
          var headers = {};
          // IE8 does not allow domains to be specified,just the *
          // headers["Access-Control-Allow-Origin"] = req.headers.origin;
          headers["Access-Control-Allow-Origin"] = "*";
          headers["Access-Control-Allow-Methods"] = "POST,GET,PUT,deletE,OPTIONS";
          headers["Access-Control-Allow-Credentials"] = false;
          headers["Access-Control-Max-Age"] = '86400'; // 24 hours
          headers["Access-Control-Allow-Headers"] = "X-requested-With,X-http-Method-Override,Content-Type,Accept";
          res.writeHead(200,headers);
          res.end();
    } else {
        // Process to send this data via email
        // and also save in data base(only for learning)
    } 

});

这里的问题是永远不要执行console.log(‘!OPTIONS’);

这里我也尝试过:

app.post('/api',next) {
    console.log('!I AM YOUR FATHER');
    ...
});

但从未打印过.
注意:我尝试使用heroku日志查看此消息,因为整个页面在Heroku中.

但是这样做我得到了同样的错误.

更多信息:

调用… / api时,我有这个标题

**GENERAL**:

request URL:https://pablocordovaupdated.herokuapp.com/api
request Method:OPTIONS
Status Code:404 Not Found
Remote Address:23.21.185.158:443
Referrer Policy:no-referrer-when-downgrade

**RESPONSE HEADERS**:

http/1.1 404 Not Found
Connection: keep-alive
Server: Cowboy
Date: Wed,10 May 2017 04:14:45 GMT
Content-Length: 494
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache,no-store

**requEST HEADERS**:

OPTIONS /api http/1.1
Host: pablocordovaupdated.herokuapp.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-request-Method: POST
Origin: https://pablocordova.herokuapp.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/58.0.3029.96 Safari/537.36
Access-Control-request-Headers: content-type
Accept: */*
Referer: https://pablocordova.herokuapp.com/
Accept-Encoding: gzip,deflate,sdch,br
Accept-Language: es-ES,es;q=0.8

题:

这是我的真正问题还是我理解不好?和/或
我该怎么做才能解决这个问题?和/或
有什么建议吗?

谢谢.

解决方法

问题似乎是 https://pablocordovaupdated.herokuapp.com/api总是返回404

$curl -i https://pablocordovaupdated.herokuapp.com/api
http/1.1 404 Not Found

也就是说,服务器没有为OPTIONS请求做任何特殊/不同的事情 – 而是所有请求都只是命中404.

我不是很清楚Express如何处理这种情况,但可能必须将其配置为为该路由发送某种响应 – 而不仅仅是服务器端的console.log.

当我看到https://pablocordovaupdated.herokuapp.com/api内容时,我看到的只是一个通用的Heroku 404页面所以它不会从你的应用程序提供,而是回到由Heroku提供服务.例如,该404页面内容包含:

<iframe src="//www.herokucdn.com/error-pages/no-such-app.html"></iframe>

也就是说,似乎在任何情况下,您的应用代码根本无法按照预期处理对该URL的请求.所以看起来这就是你需要先解决的问题.

大佬总结

以上是大佬教程为你收集整理的node.js – CORS – OPTIONS … 404(未找到)全部内容,希望文章能够帮你解决node.js – CORS – OPTIONS … 404(未找到)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。