Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript cors在本地主机上工作,但不在生产上工作_Javascript_Node.js_Express_Http Status Code 503 - Fatal编程技术网

Javascript cors在本地主机上工作,但不在生产上工作

Javascript cors在本地主机上工作,但不在生产上工作,javascript,node.js,express,http-status-code-503,Javascript,Node.js,Express,Http Status Code 503,我和你有一个奇怪的问题。我的Cors配置在本地主机上运行良好,但在生产环境中不起作用。我总是犯这样的错误 加载失败 :回应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。来源“”是 因此不允许访问。响应的HTTP状态代码为503。 如果不透明响应满足您的需要,请将请求的模式设置为 “无cors”以获取禁用cors的资源 这是我的cors配置: import * as cors from "cors"; const co

我和你有一个奇怪的问题。我的Cors配置在本地主机上运行良好,但在生产环境中不起作用。我总是犯这样的错误

加载失败 :回应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。来源“”是 因此不允许访问。响应的HTTP状态代码为503。 如果不透明响应满足您的需要,请将请求的模式设置为 “无cors”以获取禁用cors的资源

这是我的cors配置:

import * as cors from "cors";
const corsConfig: cors.CorsOptions = {
    origin: ["https://my-movie-db-roberto.herokuapp.com", "http://localhost:3000"],
    credentials: true,
    methods: "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE"
};

app.use(cors(corsConfig));

// add your routes
<MY-Routes>

// enabling pre-flight
app.options("*", cors(corsConfig));
从“cors”导入*作为cors;
const corsConfig:cors.CorsOptions={
来源:[”https://my-movie-db-roberto.herokuapp.com", "http://localhost:3000"],
证书:正确,
方法:“GET、HEAD、OPTIONS、PUT、PATCH、POST、DELETE”
};
应用程序使用(cors(corsConfig));
//添加您的路线
//启用飞行前
附件选项(“*”,cors(corsConfig));

我已经在这里呆了一段时间了,我决定最好寻求帮助,谢谢;-)

我尝试复制设置,发现
cors
库似乎没有发送
访问控制允许源文件
标题,如果源文件不在允许源文件列表中

因此,请确保该选项的条目中没有任何打字错误,或者先尝试使用“*”,然后在第二步中进行优化

以下是我正在使用的代码:

服务器端

var express = require('express')
var cors = require('cors')

const app = express()

const corsConfig = {
    origin: ["http://testing.local", "https://my-movie-db-roberto.herokuapp.com", "http://localhost:3000"],
    credentials: true,
    methods: "GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE",
    allowedHeaders: ['Content-Type']
};

app.use(cors(corsConfig));
enter code here

// add your routes
app.post('/', (req, res) => res.send('yay'));

// enabling pre-flight
app.options("*", cors(corsConfig));
app.listen(8080, () => console.log('serving...'))
客户端():


显然问题根本不在cors上。后端服务器由于缺少被视为开发人员依赖项的包而处于脱机状态,Heroku没有安装这些包。只需更改Heroku上的iProduction标志,现在一切正常。

“GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE”
更改为数组
[“GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE”]
这不是问题所在。文档允许像字符串一样设置方法。但是我尝试了数组方法,错误仍然存在,“响应的HTTP状态代码为503”修复了这个问题。它甚至可能与您的express服务器没有任何关系。
fetch('http://localhost:8080/', {
  method: 'POST', 
  headers: { 'Content-Type': 'application/json' }
})
.then(r => r.text())
.then(console.log)