Wir planen, eine Restful API auf Basis von Nginx zu entwerfen. Wir müssen DELETE- und PUT-Anfragemethoden verwenden und den domänenübergreifenden Zugriff unterstützen. Derzeit haben wir zwei Testdomänen lokaler virtueller Hosts. http://api.zlzkj.com
和http://127.0.0.1/api/web
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
Ajax-Anfrage
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
Resetful Api设计
<script src="http://c.csdnimg.cn/public/common/libs/jquery/jquery-1.11.1.min.js"></script>
<script>
$.ajax({
url: 'http://api.zlzkj.com/admins/1',
type: 'DELETE',
dataType: 'JSON'
});
</script>
</body>
</html>
Die DELETE-Anforderungsmethode kann in http://api.zlzkj.com/
下访问http://api.zlzkj.com/admins/1
normal verwendet werden
In
werden Sie feststellen, dass die Anforderungsmethode in den OPTINOS-Modus gefiltert wird. Normalerweise sollte es sich um den DELETE-Modus handeln, was dazu führt, dass die 405-Methode des Servers nicht zulässig ist
http://127.0.0.1/api/web/
下访问http://api.zlzkj.com/admins/1
Ich habe auch einige verwandte Artikel über die Firewall gefunden. Es scheint, dass die DELETE-Anforderungsmethode normal über Domänen hinweg verwendet werden kann. Die Anforderungsmethode wurde domänenübergreifend in OPTINOS gefiltert und verursachte einen 405-Fehler.
Ist es ein Problem mit der Nginx-Version? Problem mit der Umgebungskonfiguration? Ich hoffe, Sie können mir einige Einblicke geben, danke.
OPTIONS
请求比较特殊,该方法用于请求服务器告知其支持哪些其他的功能和方法。在跨域的时候,浏览器会自动发起一个
OPTIONS
请求。当你的服务器响应了
OPTIONS
请求的时候,会有类似如下的响应:如果你的服务器没有处理响应
OPTIONS
,会有如下的响应:可以看出,缺少了
Allow
响应头所以,你应该有处理这个
OPTIONS
请求的服务,这个可以直接用nginx做,在配置中,加一下如下的配置: