我正在尝试使用Fetch API来处理XML数据的POST,以避免与XmlHttpRequest的跨域问题。我面临的问题是,尽管我将Content-Type设置为'text/xml‘(在本例中,这是唯一受支持的content-type头),但我的请求的content-type正在被重置为text/plain,从而导致所请求内容的HTTP状态为415。
下面是我的fetch函数:
function doFetch(Content)
{
return fetch(
URL, { method: 'POST',
mode: 'no-cors',
headers: new Headers(
{'Content-Type': 'text/xml; charset=utf-8',
'Accept': '*/*',
'Accept-Language': 'en-GB',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'Keep-alive',
'Content-Length': Content.length
}),
body: Content
});
}内容是一串XML数据。
这是实际使用的头文件:
Content-Length:1537
content-type:text/plain;charset=UTF-8只是想知道我尝试做的事情是不是可能,这是不是我做错了什么?(我对web开发还是个新手)。
谢谢!
发布于 2017-02-14 18:30:37
因为您正在设置mode: 'no-cors' (为什么?…)对于请求,浏览器不允许您设置除CORS-safelisted request-headers之外的任何请求头。请参阅the spec requirements
…如果CORS-safelisted request-header为"
request-no-cors“并且名称/值不是CORS-safelisted request-header,则返回。
设置Content-Type: text/xml; charset=utf-8使其不再是CORS-safelisted请求头;如果Content-Type的值为application/x-www-form-urlencoded、multipart/form-data或text/plain,则它只是CORS-safelisted请求头。
因此,这里的解决方案的开始是不使用mode: 'no-cors'。
设置mode: 'no-cors'通常唯一有意义的情况是,您使用服务工作者缓存响应-因为对于mode: 'no-cors'请求,浏览器不允许您的脚本访问响应的任何属性,因此您可以对其执行的唯一有用的操作就是缓存它。
我正在尝试使用Fetch API来处理
数据的POST,以避免与XmlHttpRequest的跨域问题。
Fetch API遵循与XHR相同的跨域请求模型,因此不清楚通过使用Fetch API…可以避免哪些跨域问题
发布于 2019-06-22 17:52:42
Cors或跨域访问意味着,如果您没有明确指定在您的响应头中使用Allow- cross - origin - access标签,您将无法在不同ip甚至端口上的两个服务器之间传输数据。从客户端发送此标记将不起作用。它必须在响应的报头中。
https://stackoverflow.com/questions/42222937
复制相似问题