2

我有两个域:

  1. account.example.org
  2. app.example.org

现在我想做一个HTTP DELETE从 app.example.org 到 accounts.example.org/session 的请求。

$.ajax({
  url: "http://accounts.example.org/session",
  type: "DELETE"
});

没什么不同。accounts.example.org 中允许 CORS 的标头是:

Access-Control-Allow-Origin: http://app.example.org
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Content-Type

所以 AJAX 调用现在失败并告诉我 CORS 标头有问题......我仔细查看了 AJAX 选项,发现 jQuery 没有直接执行DELETE

Request URL:http://accounts.example.org/session
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:origin, accept
Access-Control-Request-Method:DELETE
Connection:keep-alive
Host:accounts.example.org
Origin:http://app.example.org
Referer:http://app.example.org/

有人知道这可能是什么吗?

服务器后端是 node.js,以 express 为框架。

问候

更新

我现在可以指定问题:

问题是浏览器在和(和工作)OPTIONS之前做了一个请求。这样做是因为浏览器想要在执行实际请求之前检查 CORS 策略。由于某种原因 express 不处理此请求(响应标头为空)。因此浏览器返回 CORS 策略禁止该请求。PUTDELETEGETPOST

我已经尝试过:

  1. 使用 app.use 设置标题
  2. 与 app.all
  3. 使用 app.options

没有反应。听起来可能有一个错误......

4

1 回答 1

2

它是什么浏览器?我知道它至少可以在 chrome 中使用。这就是 jQuery 主页关于 PUT 和删除的说明。

"发出请求的类型("POST" 或 "GET"),默认为"GET"。注意:这里也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持。”

于 2012-08-18T08:28:46.417 回答