1

我正在尝试在请求标头中添加一个参数,它适用于同域调用,但如果我调用不同的域(API),我需要更改标头参数本身。

这是我尝试添加参数的代码。

jqXHR.setRequestHeader(
  "Authorization", 'bearer t-7614f875-8423-4f20-a674-d7cf3096290e'
);

应该是这样的

Authorization: bearer t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

但是对于跨域调用,它变成了这样:

Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Access-Control-Request-Headers  authorization
Access-Control-Request-Method   GET

谁能告诉我如何解决跨域调用的问题?

4

1 回答 1

2

由于您使用自定义标头,因此您需要实现 CORS 的“预检”部分。在MDN上有一个很好的文档。

您基本上需要处理 HTTPOPTIONS请求并使用正确的标头进行响应,指示客户端允许该请求。如果您只想允许所有带有Authorization标头的 GET 请求,则以下响应标头可以完成这项工作:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: authorization
于 2012-12-23T14:49:16.963 回答