作者:小永远佳瞳_186 | 来源:互联网 | 2022-12-10 11:42
我正在使用React With Redux,我编写了一个中间件,当我在Epics中进行Ajax调用时,它会派上用场.例如,要做一个GET
请求,我有这个getJSON
功能.
import {ajax, AjaxResponse} from "rxjs/ajax";
const getJSON = (url: string, headers?: Object): Observable =>
ajax({
method: "GET",
url,
responseType: "json",
headers,
withCredentials: true
});
一切似乎工作正常,除了Ajax
没有设置包含访问令牌的标头.
当我单步执行代码时,headers
对象看起来像这样,
{
Authorization: "Bearer ey-SOME-ACCESS-TOKEN"
}
正如所料......但是当我查看网络调用时,它不包含带有其值的指定标头.
解析:
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Connection: keep-alive
Host: localhost:1337
Origin: http://localhost:3000
资源:
OPTIONS /api/test HTTP/1.1
Host: localhost:1337
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Access-Control-Request-Headers: authorization
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
注意:请不要将其标记为重复.我知道在SO上有类似的问题,但它们似乎都不适合我.
经过3天的拉扯我的头发并将我的头撞在墙上,我终于弄清楚问题是什么,但仍然不确定为什么/如何.显然是由于CORS
,OPTION
在实际POST
或GET
请求之前总是有请求.我已经知道并且有点理解.对我来说没有意义的是为什么它不包含标题.如果有人能向我解释这个问题就有资格获得这个问题的赏金.
我不得不在我的后端进行更改以处理OPTION
请求,它现在似乎有效.我不能花更多的时间.