1

我一直在這個愚蠢的小問題上浪費了整整一天的時間!CORS無法與contenType一起工作 - Django Rest Framework

我在前端爲我的api和backbone.js使用django-rest-framework

添加選項contentType時,我無法對服務器做任何請求。

這裏是什麼,我試圖做一個簡單的例子:

$.ajax 
    url:"http://127.0.0.1:8080/foo/" 
    type:"POST" 
    data: '{"e":"e"}' 
    contentType: "application/json" 

的選項失敗,POST永遠不會發送。

選項請求頭:

Access-Control-Request-Headers:accept, origin, content-type 
Access-Control-Request-Method:POST 
Origin:http://localhost:8000 

現在我不知道爲什麼選項都失敗。我使用的Django的corsheaders應用程序,並設置如下:

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_HEADERS = (
    'x-requested-with', 
    'content-type', 
    'accept', 
    'origin', 
    'authorization' 
) 
+0

可以共享OPTIONS響應頭? – monsur 2013-05-02 18:50:31

+0

另外,你是否需要'CORS_ALLOW_METHODS'屬性?例如CORS_ALLOW_METHODS =( 'GET', 'POST', 'PUT', 'PATCH', '刪除', '選項' ) – monsur 2013-05-02 18:51:26

+0

響應中是在Chrome – Harry 2013-05-02 19:01:47

回答

3
CORS_ORIGIN_ALLOW_ALL = True 

是不夠的,如果你有以下設置正確

INSTALLED_APPS = (
    * 
    'corsheaders', 
) 

MIDDLEWARE_CLASSES = (
    * 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
) 
相關問題