2016-09-04 16 views
2

私はDELETE ajaxリクエストを作成しようとしていますが、動作させることができません。私はPOSTMANを使ってそれを作っています。ここに私のコードだ:メソッドプリフライトの応答でアクセス制御許可メソッドによってDELETEが許可されていません

これは、jQueryのアヤックス()メソッドで作られた、私の要求です:サーバー上

$.ajax({ 
    url: imageUrl, 
    type: 'DELETE', 
    crossDomain: true 
}); 

、Node.jsの+表現で構築されたさまざまなアプリ、私が持っている:

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

そして最後に、これらは、私の要求しているヘッダとレスポンスヘッダを要求:

のリクエスト

Request URL:http://original/request/url 
Request Method:OPTIONS 
Status Code:200 OK 
Remote Address:75.126.137.93:80 

リクエストヘッダ

Accept:* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,es;q=0.2,gl;q=0.2 
Access-Control-Request-Headers: 
Access-Control-Request-Method:DELETE 
Connection:keep-alive 
Host:fs.bvodola.webfactional.com 
Origin:http://localhost:3000 
Referer:http://localhost:3000/landing/admin/add-page 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 

レスポンスヘッダ

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept 
Access-Control-Allow-Origin:* 
Allow:GET,HEAD,DELETE 
Connection:keep-alive 
Content-Length:15 
Content-Type:text/html; charset=utf-8 
Date:Sat, 03 Sep 2016 23:34:17 GMT 
ETag:W/"f-W+bYAIA7Bs2GwQecFLp1SA" 
Server:nginx 
X-Powered-By:Express 

そしてコンソールに私は以下のようになります。

XMLHttpRequestはhttp://original/request/urlを読み込めません。メソッドは、プリフライト応答でアクセス制御許可メソッドによってDELETEを許可されていません。

どうすれば解決できますか? いくつかのStackOverflowに関する質問では、Access-Control-Allow-HeadersはAccess-Control-Request-Headersと同じである必要があることを読んでいます。私はjQueryの要求にそれを設定しようとする。しかし、私は、コンソール上で以下のようになります。

があるかもしれないものの任意のアイデアを危険なヘッダーを設定するために拒否し、「アクセス・コントロール・リクエスト・ヘッダ」

違う?ありがとう!


私は次のStackOverflowの質問を見てきましたが、答えを見つけることができませんでした:

+0

CORSヘッダーは、リクエストヘッダーではなくレスポンスヘッダーに設定します。 – Developer

+0

こんにちは、@Developerは、私の$ .ajax()呼び出しからわかるように、リクエストにヘッダーを設定していません。私は他に何をすべきか分からなかったのですぐに試しましたが、すぐにそれが正しい方法ではないことがわかりました。 –

+1

Gotcha。応答ヘッダーで許可されたメソッドを設定することもできますか? *アクセス制御 - 許可メソッド*を "*"にするか、コンマ区切りで許可したい特定のメソッド? – Developer

答えて

8

Access-Control-Allow-Methodsも、レスポンスヘッダーにコンマで区切って指定する方法で追加します。'GET, POST,DELETE...'

関連する問題