【发布时间】:2014-09-23 17:00:14
【问题描述】:
我正在阅读有关 CORS 请求的信息,并且我已经设法发出常规的 GET 或 POST 请求并且它工作正常。但是,当我将授权标头添加到 GET 或 POST 请求时,预检 OPTIONS 请求将发送到服务器,我得到 500 INTERNAL SERVER ERR,但实际请求并未发送。我的问题是预检实际上是如何工作的,它需要什么响应才能发送主请求?是否可以在没有预检的情况下发送它,因为我确信它会起作用? server-rside 是用 Django 1.6 编写的,并将 ACCESS-ALLOW-ORIGIN 设置为 *,它适用于常规的 post 和 get 请求。
这是我的 JS 代码:
$.ajax({
type: "GET",
url: "http://url/login/",
async:false,
contentType: "application/json",
headers: {
"Authorization": "Basic " + btoa(loginName + ':' + password),
},
success: function (data) {
alert("OK!");
},
failure: function(errMsg) {
alert(errMsg);
}
});
这些是执行请求时来自 Chrome DevTools 的标头: 请求头:
OPTIONS /login/ HTTP/1.1
Host: url
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Access-Control-Request-Headers: accept, authorization, content-type
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,hr;q=0.6,sr;q=0.4
响应标头:
HTTP/1.1 500 INTERNAL SERVER ERROR
Date: Thu, 31 Jul 2014 16:15:19 GMT
Server: Apache/2.2.15 (CentOS)
X-Frame-Options: SAMEORIGIN
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
【问题讨论】:
标签: jquery ajax django apache cors