当前位置: 首页 > 知识库问答 >
问题:

带有斑点的django-cors-headers不起作用

祁博涛
2023-03-14

我在django中使用spotify API/spotipy,需要用户登录到他们的帐户才能访问他们的数据。我使用了“pip3 install django-cors-Headers”并将适当的部分添加到settings.py.

#settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'jazz_stuff.apps.JazzStuffConfig',
'corsheaders',
]

MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = True

CSRF_TRUSTED_ORIGINS = (
    'localhost:8000',
)

#views.py
def callSpotify(request):
if request.method == 'POST':
    if request.is_ajax():
        sp_oauth = oauth2.SpotifyOAuth( SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET,SPOTIPY_REDIRECT_URI, scope=SCOPE,cache_path=CACHE)
        url = sp_oauth.get_authorize_url()
        return HttpResponseRedirect(url)
return None

即使这样,我仍然收到有关缺少访问控制允许源标头的错误,并且spotify登录页面无法打开。

jquery.min.js:2 XHR完成加载:GET"http://localhost:8000/callSpotify/"。

(index): 1加载https://accounts.spotify.com/authorize?client_id=14c8a7dfd5804fb5994243e69bb7606f失败

XHR完成加载:选项”https://accounts.spotify.com/authorize?client_id=14c8a7dfd5804fb5994243e69bb7606f

我应该如何继续,这样我就不会得到cors错误?

编辑:添加的标题

将军

Request URL: https://accounts.spotify.com/authorize?client_id=14c8a7dfd5804fb5994243e69bb7606f&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback%2F&scope=user-modify-playback-state+user-top-read&show_dialog=True
Request Method: OPTIONS
Status Code: 204 No Content
Remote Address: 104.154.127.47:443
Referrer Policy: no-referrer-when-downgrade

响应标头

Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Date: Wed, 14 Mar 2018 06:31:56 GMT
Keep-Alive: timeout=600
Pragma: no-cache
Server: nginx
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-UA-Compatible: IE=edge

请求

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,fr;q=0.8
Access-Control-Request-Headers: x-csrftoken,x-requested-with
Access-Control-Request-Method: GET
Connection: keep-alive
Host: accounts.spotify.com
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36

共有1个答案

易自珍
2023-03-14

尝试将这些线条添加到您的settings.py

# Corsheaders settings
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
    '*'
)

试试这个……

 类似资料:
  • 问题内容: 我的Django版本是1.8.6。我已将corsheaders文件夹复制到项目文件夹中。我已经点安装django-cors-headers(ver 1.1.0)。这是我的setting.py: 这是我的jQuery: 在执行getLeague()时,它会不断提醒“失败”。当我看到控制台时,它显示“ XMLHttpRequest无法加载http://otherdomain.ashx?us

  • 问题内容: 更新的问题 我的虚拟主机 问题答案: 这是问题的最可能原因。您已经在超级用户的主文件夹中创建了virtualenv。但是该文件夹不太可能被Apache访问。默认情况下,其他任何用户都无法访问用户的主文件夹。 Web服务器和WSGI过程将运行作为一个非特权用户通常命名为,,或者类似的东西。虽然您可以通过更改/ root /上的权限来解决此问题,但这不是很大。如果是普通用户,则危险性会降低

  • 我已经有效地使用 wiremock 一段时间了,我想启用 CORS 对模拟 API 的访问。 我尝试在响应标头中设置访问控制允许来源:* 和其他标头,但都无济于事。 这是我的一个映射示例: 我到底做错了什么导致CORS无法工作? 提前谢谢。

  • 这里使用Ajax:

  • 本文向大家介绍DRF跨域后端解决之django-cors-headers的使用,包括了DRF跨域后端解决之django-cors-headers的使用的使用技巧和注意事项,需要的朋友参考一下 在使用django-rest-framework开发项目的时候我们总是避免不了跨域的问题,因为现在大多数的项目都是前后端分离,前后端项目部署在不同的web服务器上,因为我们是后端程序员,因此我要通过后端的程序

  • 问题内容: 我在使用以下代码时遇到了麻烦: 调用Offer.query({},function(){}); 在我的控制器中工作没有任何问题。但是这部分不起作用: 这总是返回400错误: “NetworkError:400错误的请求- https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?call