Javascript 仅在使用django活塞的跨域API请求中工作
我无法使用django活塞在API上执行POST/PUT/DELETE跨域请求,我已使用此脚本启用CORS(基于): 在前端,我使用的是激活JSONP的主干网。我没有任何错误,选项请求工作正常,然后什么也没有发生。我试图更改«访问控制允许方法»,但它没有改变任何东西。有什么想法吗 编辑: 以下是选项请求的请求头:Javascript 仅在使用django活塞的跨域API请求中工作,javascript,ajax,django,cors,django-piston,Javascript,Ajax,Django,Cors,Django Piston,我无法使用django活塞在API上执行POST/PUT/DELETE跨域请求,我已使用此脚本启用CORS(基于): 在前端,我使用的是激活JSONP的主干网。我没有任何错误,选项请求工作正常,然后什么也没有发生。我试图更改«访问控制允许方法»,但它没有改变任何东西。有什么想法吗 编辑: 以下是选项请求的请求头: OPTIONS /api/comments/ HTTP/1.1 Host: apitest.dev:8000 User-Agent: Mozilla/5.0 (X11; Linux i
OPTIONS /api/comments/ HTTP/1.1
Host: apitest.dev:8000
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Origin: http://3l-oauth.dev:1338
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,content-type
Pragma: no-cache
Cache-Control: no-cache
和响应标题:
HTTP/1.0 200 OK
Date: Sat, 12 May 2012 09:22:56 GMT
Server: WSGIServer/0.1 Python/2.7.3
Access-Control-Allow-Methods: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: AUTHORIZATION
Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
JSONP是GET-only: 您不能跨域发出POST、PUT或DELETE请求。跨域JavaScript通过使用
标记向服务器发送动态JavaScript请求来实现。脚本标记仅用于获取请求
但是,在处理跨域JavaScript时,为适应此限制,建议使用一个方法查询参数,您可以在服务器端代码中使用该参数来确定如何处理特定请求
例如,如果请求是
POST /api/comments/
然后你可以这样做:
/api/comments?method=POST
在幕后,它仍然是一个GET请求,但只需对API稍加修改即可实现目标
确定请求类型时,不要检查HTTP方法:
if request_method == "OPTIONS":
改为检查请求参数“method”:
JSONP请求必须返回JavaScript:
另一个需要注意的非常重要的一点是,JSONP请求必须在函数调用中返回包装(或填充)的JavaScript。由于请求是通过期望JavaScript的脚本标记在后台发出的,因此服务器必须返回浏览器能够理解的内容
如果这对你来说没有意义,或者你需要更多的信息,那么有一个问题
if request_method == "OPTIONS":
if request.GET["method"] == "OPTIONS":