Préparation à la conception d'une API Restful basée sur Nginx, qui nécessite les méthodes de requête DELETE et PUT et prend en charge l'accès inter-domaines. Actuellement, il existe deux domaines de test d'hôtes virtuels locaux. 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;
demande ajax
<!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>
La méthode de requête DELETE peut être utilisée normalement dans http://api.zlzkj.com/
下访问http://api.zlzkj.com/admins/1
Dans
, vous constaterez que la méthode de requête est filtrée en mode OPTINOS. Normalement, elle devrait être en mode DELETE, ce qui entraîne la méthode 405 du serveur non autoriséehttp://127.0.0.1/api/web/
下访问http://api.zlzkj.com/admins/1
.
J'ai également trouvé des articles connexes sur le mur. Il semble qu'une fois leur Nginx configuré comme ceci, la méthode de requête DELETE peut être utilisée normalement sur tous les domaines. Cependant, de mon côté, elle ne peut être utilisée que dans le même domaine. La méthode de requête sera filtrée dans OPTINOS sur la méthode des domaines, cela a provoqué une erreur 405.
Est-ce un problème avec la version Nginx ? Problème de configuration de l'environnement ? J'espère que vous pourrez me donner quelques idées, merci.
La requête
OPTIONS
est spéciale. Cette méthode est utilisée pour demander au serveur de lui indiquer quelles autres fonctions et méthodes il prend en charge.OPTIONS
请求比较特殊,该方法用于请求服务器告知其支持哪些其他的功能和方法。在跨域的时候,浏览器会自动发起一个
OPTIONS
请求。当你的服务器响应了
OPTIONS
请求的时候,会有类似如下的响应:如果你的服务器没有处理响应
OPTIONS
,会有如下的响应:可以看出,缺少了
🎜Si votre serveur ne traite pas la réponseAllow
响应头所以,你应该有处理这个
OPTIONS
En cas de cross-domaine, le navigateur lancera automatiquement une requêteOPTIONS
.Lorsque votre serveur répondra à la requête
OPTIONS
, il y aura une réponse similaire à la suivante :OPTIONS
, il y aura la réponse suivante : 🎜 rrreee 🎜On peut voir que l'en-tête de réponseAllow
est manquant🎜Vous devriez donc avoir un service pour gérer cette requêteOPTIONS
. Cela peut être fait directement avec nginx. la configuration, ajoutez Voici la configuration suivante : 🎜 rrreee