我有两个域名:
现在我想从app.example.org向accounts.example.org/session发出HTTP DELETE
请求。
$.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/
有人知道这是什么吗?
Server Backend是node.js,表达为框架。
此致
更新
我现在可以指定问题:
问题是浏览器在OPTIONS
和PUT
(DELETE
和GET
工作之前)发出POST
请求。这样做是因为浏览器想要在执行实际请求之前检查CORS策略。出于某种原因,express没有处理此请求(响应标头为空)。因此浏览器返回CORS策略禁止请求。
我已经尝试过了:
没有反应。听起来可能有一个错误......
答案 0 :(得分:2)
它是什么浏览器?我知道它至少适用于chrome。这是jQuery主页关于PUT和删除的内容。
“要求的类型(”POST“或”GET“),默认为”GET“。 注意:其他HTTP请求方法(如PUT和DELETE)也可以 这里使用的是所有浏览器都不支持它们。“