久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Nginx如何進(jìn)行跨域配置,才能使用DELETE,PUT請(qǐng)求方法

瀏覽:137日期:2024-06-22 15:58:09

問(wèn)題描述

背景描述

準(zhǔn)備基于Nginx設(shè)計(jì)一個(gè)Restful Api,需要用到DELETE,PUT請(qǐng)求方式,并且要支持跨域訪問(wèn),目前有本地虛擬主機(jī)http://api.zlzkj.com和http://127.0.0.1/api/web兩個(gè)測(cè)試域。

問(wèn)題描述

nginx.conf相關(guān)跨域配置

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請(qǐng)求

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8' /> <title>Document</title></head><body> Resetful Api設(shè)計(jì) </script> <script>$.ajax({ url: ’http://api.zlzkj.com/admins/1’, type: ’DELETE’, dataType: ’JSON’}); </script></body></html>

在http://api.zlzkj.com/下訪問(wèn)http://api.zlzkj.com/admins/1可以正常使用DELETE請(qǐng)求方式

Nginx如何進(jìn)行跨域配置,才能使用DELETE,PUT請(qǐng)求方法

在http://127.0.0.1/api/web/下訪問(wèn)http://api.zlzkj.com/admins/1會(huì)發(fā)現(xiàn)Request Method過(guò)濾成OPTINOS方式了,正常應(yīng)該是DELETE方式,引起了服務(wù)器的405 Method Not Allowed

Nginx如何進(jìn)行跨域配置,才能使用DELETE,PUT請(qǐng)求方法

翻墻也找過(guò)一些相關(guān)文章,好像他們的Nginx這樣配置后就可以跨域正常使用DELETE請(qǐng)求方式了,而我這邊只有在同域下才能使用,跨域就會(huì)將Request Method過(guò)濾成OPTINOS方式了,就引起了了405錯(cuò)誤。是Nginx版本的問(wèn)題?環(huán)境配置的問(wèn)題?希望大家能給點(diǎn)見(jiàn)解,謝謝了。

問(wèn)題解答

回答1:

OPTIONS請(qǐng)求比較特殊,該方法用于請(qǐng)求服務(wù)器告知其支持哪些其他的功能和方法。在跨域的時(shí)候,瀏覽器會(huì)自動(dòng)發(fā)起一個(gè)OPTIONS請(qǐng)求。當(dāng)你的服務(wù)器響應(yīng)了OPTIONS請(qǐng)求的時(shí)候,會(huì)有類似如下的響應(yīng):

Allow → GET,HEAD,POST,OPTIONS,TRACECache-Control → max-age=86400Connection → keep-aliveContent-Encoding → gzipContent-Length → 20Content-Type → text/htmlDate → Thu, 30 Jun 2016 04:00:24 GMTExpires → Fri, 01 Jul 2016 04:00:24 GMTServer → bfe/1.0.8.14Vary → Accept-Encoding,User-Agent

如果你的服務(wù)器沒(méi)有處理響應(yīng)OPTIONS,會(huì)有如下的響應(yīng):

Connection → keep-aliveContent-Encoding → gzipContent-Type → text/htmlDate → Thu, 30 Jun 2016 04:02:35 GMTServer → nginx/1.4.6 (Ubuntu)Transfer-Encoding → chunked

可以看出,缺少了Allow響應(yīng)頭所以,你應(yīng)該有處理這個(gè)OPTIONS請(qǐng)求的服務(wù),這個(gè)可以直接用nginx做,在配置中,加一下如下的配置:

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; }回答2:

$.ajax({ url: ’http://api.zlzkj.com/admins/1’, type: ’DELETE’, dataType: ’JSON’, crossDomain:true});

主站蜘蛛池模板: 衡南县| 同仁县| 神池县| 伊春市| 安吉县| 汾西县| 霸州市| 新龙县| 将乐县| 台南县| 涞源县| 修水县| 寿宁县| 紫金县| 淮阳县| 甘孜| 嘉鱼县| 湛江市| 锡林郭勒盟| 宁武县| 固安县| 宜章县| 大丰市| 邯郸市| 德格县| 浪卡子县| 中超| 凯里市| 涟源市| 萝北县| 峨眉山市| 南城县| 花垣县| 巴彦淖尔市| 商洛市| 牟定县| 宁蒗| 英吉沙县| 贺兰县| 百色市| 孙吴县|