首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Fetch API发布XML

使用Fetch API发布XML
EN

Stack Overflow用户
提问于 2017-02-14 17:56:30
回答 2查看 8.2K关注 0票数 5

我正在尝试使用Fetch API来处理XML数据的POST,以避免与XmlHttpRequest的跨域问题。我面临的问题是,尽管我将Content-Type设置为'text/xml‘(在本例中,这是唯一受支持的content-type头),但我的请求的content-type正在被重置为text/plain,从而导致所请求内容的HTTP状态为415。

下面是我的fetch函数:

代码语言:javascript
复制
    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数据。

这是实际使用的头文件:

代码语言:javascript
复制
    Content-Length:1537
    content-type:text/plain;charset=UTF-8

只是想知道我尝试做的事情是不是可能,这是不是我做错了什么?(我对web开发还是个新手)。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 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-urlencodedmultipart/form-datatext/plain,则它只是CORS-safelisted请求头。

因此,这里的解决方案的开始是不使用mode: 'no-cors'

设置mode: 'no-cors'通常唯一有意义的情况是,您使用服务工作者缓存响应-因为对于mode: 'no-cors'请求,浏览器不允许您的脚本访问响应的任何属性,因此您可以对其执行的唯一有用的操作就是缓存它。

我正在尝试使用Fetch API来处理

数据的POST,以避免与XmlHttpRequest的跨域问题。

Fetch API遵循与XHR相同的跨域请求模型,因此不清楚通过使用Fetch API…可以避免哪些跨域问题

票数 5
EN

Stack Overflow用户

发布于 2019-06-22 17:52:42

Cors或跨域访问意味着,如果您没有明确指定在您的响应头中使用Allow- cross - origin - access标签,您将无法在不同ip甚至端口上的两个服务器之间传输数据。从客户端发送此标记将不起作用。它必须在响应的报头中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42222937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档