解决了的问题--这个问题来自我的起始脚本,它与一个旧版本的构建链接在一起,而我不记得更改它--这就是为什么我没有检查.因此,高速公路/cors包/ TS兼容性没有什么问题;)
我使用NodeJS、Express和TypeScript创建了一个API,并且在解决与CORS相关的问题时遇到了困难。我的API可以从以下域模式访问:https://api.domain.com和https://www.front.domain.com前端。
当我尝试从前端登录时,我收到了以下错误:
CORS策略阻止从“
”从“https://api.domain.com/sessions/login”到“https://www.front.domain.com”对XMLHttpRequest的访问:对飞行前请求的响应不通过访问控制检查:请求的资源上不存在“访问控制-允许-原产地”报头。
当我在本地运行API时,就会出现“访问控制-允许-原产地”标题(我使用Postman检查它),并且错误并不存在。但是,当我部署API时,每个请求中都没有相同的标头,并且我得到了上面的错误消息。
我尝试过在OVH网络云和智能云上部署它,因为我在这两个服务上都有问题,所以我认为我的代码有问题,但我找不到它。
我的服务器代码如下(createServer.ts):
const createServer = () => {
const app = express()
app.use(cors({ credentials: true, origin: 'https://www.front.domain.com', methods: ["OPTIONS", "HEAD", "GET", "POST", "PUT", "DELETE"] }))
app.use(express.json())
app.use(cookieParser())
app.use(deserializeToken)
routes(app)
return app
}
(app.ts)
const app = createServer()
app.listen(
port,
async () => {
console.info(`API is running on: ${rootUrl}, port: ${port}`)
await dbConnect()
}
)
编辑:问题似乎来自于构建。在生成后,标题将被删除。这是我的tsconfig.json文件:
{
"compilerOptions": {
"outDir": "build",
"target": "es6",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}
建造前:

后建

发布于 2022-01-10 09:53:27
你查过你的检验员的飞行前要求了吗?它应该是一个选项请求,就在您使用相同URL的原始请求之前。
https://stackoverflow.com/questions/70623604
复制相似问题