PUT请求
浏览器在发PUT请求前会先发OPTIONS请求进行预检,看服务端是否可以接受PUT请求,若可以就在响应头添加字段告诉浏览器可以继续发送PUT请求
response[“Access-Control-Allow-Methods”] = “PUT” 就是添加这个字段
所以PUT请求实际上浏览器会向服务端发两次请求
if request.method=="OPTIONS": # 预检
response = HttpResponse()
response["Access-Control-Allow-Origin"] = "http://127.0.0.1:8010"
response["Access-Control-Allow-Methods"] = "PUT"
return response
elif request.method=="PUT":
s = {"name": "egon", "age": 122}
response = HttpResponse(json.dumps(s))
response["Access-Control-Allow-Origin"] = "http://127.0.0.1:8010"
return response
跨域请求
跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域
举个例子:假如一个域名为aaa.cn的网站,它发起一个资源路径为aaa.cn/books/getBookInfo的 Ajax 请求,那么这个请求是同域的,因为资源路径的协议、域名以及端口号与当前域一致(例子中协议名默认为http,端口号默认为80)。但是,如果发起一个资源路径为bbb.com/pay/purchase的 Ajax 请求,那么这个请求就是跨域请求,因为域不一致,与此同时由于安全问题,这种请求会受到同源策略限制。