2 个 nodeJS 服务器正在运行,从一个我发出 ajax 请求到第二个:
fetch('http://localhost:3030/data.json', {
method: 'get',
headers: {
"Content-type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer abc"
}
})
.then( (response)=>response.json() )
.then(function (data) {
console.log('Request succeeded with JSON response', data);
})
.catch(function (error) {
console.log('Request failed', error);
});
因为Authorization浏览器必须发出 2 个 OPTIONS 和 GET 请求
但在 OPTIONS 上它返回:
Fetch API 无法加载http://localhost:3030/data.json。预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权。
General:
Request URL:http://localhost:3030/data.json
Request Method:OPTIONS
Status Code:200 OK
Remote Address:127.0.0.1:3030
Referrer Policy:no-referrer-when-downgrade
Response Headers:
access-control-allow-headers:content-type, accept
access-control-allow-methods:GET, POST, PUT, DELETE, OPTIONS
access-control-allow-origin:http://localhost:3000
access-control-max-age:10
Connection:keep-alive
Content-Type:application/json
Date:Wed, 26 Apr 2017 14:31:58 GMT
Transfer-Encoding:chunked
X-Powered-By:Express
Request Headers:
Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-GB,en;q=0.8,en-US;q=0.6,ru;q=0.4
Access-Control-Request-Headers:authorization,content-type
Access-Control-Request-Method:GET
Connection:keep-alive
Host:localhost:3030
Origin:http://localhost:3000
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
帮助设置来自服务器的响应,以便 ajax 请求无错误地工作
必须在 Access-Control-Allow-Headers 响应标头中允许授权