Javascript cors在本地主机上工作,但不在生产上工作
我和你有一个奇怪的问题。我的Cors配置在本地主机上运行良好,但在生产环境中不起作用。我总是犯这样的错误 加载失败 :回应 飞行前请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。来源“”是 因此不允许访问。响应的HTTP状态代码为503。 如果不透明响应满足您的需要,请将请求的模式设置为 “无cors”以获取禁用cors的资源 这是我的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
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)