首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何允许CORS?

如何允许CORS?

提问于 2017-12-19 17:10:39
回答 2关注 0查看 627

我正在尝试在使用Express.js Web框架的Node.js应用程序中支持CORS。我已经阅读了关于如何处理这个问题的Google小组讨论,并阅读了一些关于CORS如何工作的文章。首先,我这样做了(代码是用CoffeeScript语法编写的):

代码语言:txt
复制
代码语言:txt
复制
app.options "*", (req, res) ->
代码语言:txt
复制
  res.header 'Access-Control-Allow-Origin', '*'
代码语言:txt
复制
  res.header 'Access-Control-Allow-Credentials', true
代码语言:txt
复制
  # try: 'POST, GET, PUT, DELETE, OPTIONS'
代码语言:txt
复制
  res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
代码语言:txt
复制
  # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
代码语言:txt
复制
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
代码语言:txt
复制
  # ...

这似乎并不奏效。好像我的浏览器(Chrome)没有发送初始的OPTIONS请求。当我刚刚更新资源块时,我需要提交一个跨源GET请求到:

代码语言:txt
复制
app.get "/somethingelse", (req, res) ->
代码语言:txt
复制
  # ...
代码语言:txt
复制
  res.header 'Access-Control-Allow-Origin', '*'
代码语言:txt
复制
  res.header 'Access-Control-Allow-Credentials', true
代码语言:txt
复制
  res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
代码语言:txt
复制
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
代码语言:txt
复制
  # ...

它工作(在Chrome中)。这也适用于Safari。

我已经读了...

在实现CORS的浏览器中,每个交叉源GET或POST请求之前都有一个OPTIONS请求,用于检查GET或POST是否正确。

所以我的主要问题是,怎么这似乎没有发生在我的情况?为什么不是我的app.options块被调用?为什么我需要在我的主app.get块中设置标题?

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档