Bagaimanakah Nginx melakukan konfigurasi silang domain supaya ia boleh menggunakan kaedah permintaan DELETE dan PUT?
大家讲道理
大家讲道理 2017-05-16 17:15:58
0
2
1396

Penerangan latar belakang

Bersedia untuk mereka bentuk Restful Api berdasarkan Nginx, yang memerlukan kaedah permintaan DELETE dan PUT, dan menyokong akses merentas domain Pada masa ini, terdapat dua domain ujian hos maya tempatan. http://api.zlzkj.comhttp://127.0.0.1/api/web

Penerangan masalah

nginx.conf konfigurasi merentas domain berkaitan

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;

permintaan 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>

Kaedah permintaan DELETE boleh digunakan seperti biasa dalam

http://api.zlzkj.com/下访问http://api.zlzkj.com/admins/1

Dalam

, anda akan mendapati Kaedah Permintaan ditapis ke dalam mod OPTINOS Lazimnya ia mestilah mod PADAM, yang menyebabkan Kaedah 405 pelayan Tidak Dibenarkanhttp://127.0.0.1/api/web/下访问http://api.zlzkj.com/admins/1.

Saya juga telah menemui beberapa artikel berkaitan di atas dinding Nampaknya selepas Nginx mereka dikonfigurasikan seperti ini, kaedah permintaan DELETE boleh digunakan secara normal di seluruh domain Namun, di pihak saya, ia hanya boleh digunakan dalam domain yang sama. Kaedah Permintaan akan ditapis ke dalam OPTINOS merentas domain, ia menyebabkan ralat 405.

Adakah masalah dengan versi Nginx? Masalah konfigurasi persekitaran? Saya harap anda dapat memberi saya sedikit pandangan, terima kasih.

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
某草草

PermintaanOPTIONS adalah istimewa Kaedah ini digunakan untuk meminta pelayan memberitahu fungsi dan kaedah lain yang disokongnya. OPTIONS请求比较特殊,该方法用于请求服务器告知其支持哪些其他的功能和方法。
在跨域的时候,浏览器会自动发起一个OPTIONS请求。
当你的服务器响应了OPTIONS请求的时候,会有类似如下的响应:

Allow → GET,HEAD,POST,OPTIONS,TRACE
Cache-Control → max-age=86400
Connection → keep-alive
Content-Encoding → gzip
Content-Length → 20
Content-Type → text/html
Date → Thu, 30 Jun 2016 04:00:24 GMT
Expires → Fri, 01 Jul 2016 04:00:24 GMT
Server → bfe/1.0.8.14
Vary → Accept-Encoding,User-Agent

如果你的服务器没有处理响应OPTIONS,会有如下的响应:

Connection → keep-alive
Content-Encoding → gzip
Content-Type → text/html
Date → Thu, 30 Jun 2016 04:02:35 GMT
Server → nginx/1.4.6 (Ubuntu)
Transfer-Encoding → chunked

可以看出,缺少了Allow响应头
所以,你应该有处理这个OPTIONSApabila merentas domain, penyemak imbas akan secara automatik memulakan permintaan OPTIONS.
Apabila pelayan anda membalas permintaan OPTIONS, akan ada respons yang serupa dengan yang berikut:

if ($request_method = 'OPTIONS') { 
add_header Access-Control-Allow-Origin *; 
add_header Access-Control-Allow-Credentials true; 
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; 
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
return 204; 
}
🎜Jika pelayan anda tidak memproses respons PILIHAN, akan ada respons berikut: 🎜 rrreee 🎜Dapat dilihat bahawa pengepala respons Allow tiada🎜Jadi, anda sepatutnya mempunyai perkhidmatan untuk mengendalikan permintaan OPTIONS ini boleh dilakukan secara langsung dengan nginx konfigurasi, tambah Inilah konfigurasi berikut: 🎜 rrreee
PHPzhong
$.ajax({
    url: 'http://api.zlzkj.com/admins/1',
    type: 'DELETE',
    dataType: 'JSON',
    crossDomain:true
});
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan