Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
fetch
提交
3b5dc9c1
F
fetch
项目概览
github
/
fetch
8 个月 前同步成功
通知
30
Star
25765
Fork
3216
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fetch
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3b5dc9c1
编写于
1月 18, 2016
作者:
M
Mislav Marohnić
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cleanup in determining implicit content-type
上级
46a8e77a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
27 deletion
+41
-27
fetch.js
fetch.js
+11
-17
test/test.js
test/test.js
+30
-10
未找到文件。
fetch.js
浏览文件 @
3b5dc9c1
...
@@ -128,16 +128,10 @@
...
@@ -128,16 +128,10 @@
this
.
_bodyInit
=
body
this
.
_bodyInit
=
body
if
(
typeof
body
===
'
string
'
)
{
if
(
typeof
body
===
'
string
'
)
{
this
.
_bodyText
=
body
this
.
_bodyText
=
body
return
'
text/plain;charset=UTF-8
'
}
else
if
(
support
.
blob
&&
Blob
.
prototype
.
isPrototypeOf
(
body
))
{
}
else
if
(
support
.
blob
&&
Blob
.
prototype
.
isPrototypeOf
(
body
))
{
this
.
_bodyBlob
=
body
this
.
_bodyBlob
=
body
if
(
body
.
type
!==
''
)
{
return
body
.
type
}
}
else
if
(
support
.
formData
&&
FormData
.
prototype
.
isPrototypeOf
(
body
))
{
}
else
if
(
support
.
formData
&&
FormData
.
prototype
.
isPrototypeOf
(
body
))
{
this
.
_bodyFormData
=
body
this
.
_bodyFormData
=
body
// Since we don't know what the multipart/form-data boundary string
// will be, we can't set a Content-Type here
}
else
if
(
!
body
)
{
}
else
if
(
!
body
)
{
this
.
_bodyText
=
''
this
.
_bodyText
=
''
}
else
if
(
support
.
arrayBuffer
&&
ArrayBuffer
.
prototype
.
isPrototypeOf
(
body
))
{
}
else
if
(
support
.
arrayBuffer
&&
ArrayBuffer
.
prototype
.
isPrototypeOf
(
body
))
{
...
@@ -146,6 +140,14 @@
...
@@ -146,6 +140,14 @@
}
else
{
}
else
{
throw
new
Error
(
'
unsupported BodyInit type
'
)
throw
new
Error
(
'
unsupported BodyInit type
'
)
}
}
if
(
!
this
.
headers
.
get
(
'
content-type
'
))
{
if
(
typeof
body
===
'
string
'
)
{
this
.
headers
.
set
(
'
content-type
'
,
'
text/plain;charset=UTF-8
'
)
}
else
if
(
this
.
_bodyBlob
&&
this
.
_bodyBlob
.
type
)
{
this
.
headers
.
set
(
'
content-type
'
,
this
.
_bodyBlob
.
type
)
}
}
}
}
if
(
support
.
blob
)
{
if
(
support
.
blob
)
{
...
@@ -213,7 +215,6 @@
...
@@ -213,7 +215,6 @@
function
Request
(
input
,
options
)
{
function
Request
(
input
,
options
)
{
options
=
options
||
{}
options
=
options
||
{}
var
body
=
options
.
body
var
body
=
options
.
body
var
bodyFromOptions
=
true
if
(
Request
.
prototype
.
isPrototypeOf
(
input
))
{
if
(
Request
.
prototype
.
isPrototypeOf
(
input
))
{
if
(
input
.
bodyUsed
)
{
if
(
input
.
bodyUsed
)
{
throw
new
TypeError
(
'
Already read
'
)
throw
new
TypeError
(
'
Already read
'
)
...
@@ -228,7 +229,6 @@
...
@@ -228,7 +229,6 @@
if
(
!
body
)
{
if
(
!
body
)
{
body
=
input
.
_bodyInit
body
=
input
.
_bodyInit
input
.
bodyUsed
=
true
input
.
bodyUsed
=
true
bodyFromOptions
=
false
}
}
}
else
{
}
else
{
this
.
url
=
input
this
.
url
=
input
...
@@ -245,10 +245,7 @@
...
@@ -245,10 +245,7 @@
if
((
this
.
method
===
'
GET
'
||
this
.
method
===
'
HEAD
'
)
&&
body
)
{
if
((
this
.
method
===
'
GET
'
||
this
.
method
===
'
HEAD
'
)
&&
body
)
{
throw
new
TypeError
(
'
Body not allowed for GET or HEAD requests
'
)
throw
new
TypeError
(
'
Body not allowed for GET or HEAD requests
'
)
}
}
var
contentType
=
this
.
_initBody
(
body
)
this
.
_initBody
(
body
)
if
(
bodyFromOptions
&&
contentType
&&
!
this
.
headers
.
get
(
'
Content-Type
'
))
{
this
.
headers
.
set
(
'
Content-Type
'
,
contentType
)
}
}
}
Request
.
prototype
.
clone
=
function
()
{
Request
.
prototype
.
clone
=
function
()
{
...
@@ -287,16 +284,13 @@
...
@@ -287,16 +284,13 @@
options
=
{}
options
=
{}
}
}
this
.
headers
=
options
.
headers
instanceof
Headers
?
options
.
headers
:
new
Headers
(
options
.
headers
)
var
contentType
=
this
.
_initBody
(
bodyInit
)
if
(
contentType
&&
!
this
.
headers
.
get
(
'
Content-Type
'
))
{
this
.
headers
.
set
(
'
Content-Type
'
,
contentType
)
}
this
.
type
=
'
default
'
this
.
type
=
'
default
'
this
.
status
=
options
.
status
this
.
status
=
options
.
status
this
.
ok
=
this
.
status
>=
200
&&
this
.
status
<
300
this
.
ok
=
this
.
status
>=
200
&&
this
.
status
<
300
this
.
statusText
=
options
.
statusText
this
.
statusText
=
options
.
statusText
this
.
headers
=
options
.
headers
instanceof
Headers
?
options
.
headers
:
new
Headers
(
options
.
headers
)
this
.
url
=
options
.
url
||
''
this
.
url
=
options
.
url
||
''
this
.
_initBody
(
bodyInit
)
}
}
Body
.
call
(
Response
.
prototype
)
Body
.
call
(
Response
.
prototype
)
...
...
test/test.js
浏览文件 @
3b5dc9c1
...
@@ -312,7 +312,7 @@ suite('Request', function() {
...
@@ -312,7 +312,7 @@ suite('Request', function() {
body
:
'
I work out
'
,
body
:
'
I work out
'
,
headers
:
{
headers
:
{
accept
:
'
application/json
'
,
accept
:
'
application/json
'
,
'
Content-Type
'
:
'
text/plain
'
'
X-Request-ID
'
:
'
123
'
}
}
})
})
var
request2
=
new
Request
(
request1
,
{
var
request2
=
new
Request
(
request1
,
{
...
@@ -320,7 +320,7 @@ suite('Request', function() {
...
@@ -320,7 +320,7 @@ suite('Request', function() {
})
})
assert
.
equal
(
request2
.
headers
.
get
(
'
accept
'
),
undefined
)
assert
.
equal
(
request2
.
headers
.
get
(
'
accept
'
),
undefined
)
assert
.
equal
(
request2
.
headers
.
get
(
'
content-type
'
),
undefined
)
assert
.
equal
(
request2
.
headers
.
get
(
'
x-request-id
'
),
undefined
)
assert
.
equal
(
request2
.
headers
.
get
(
'
x-test
'
),
'
42
'
)
assert
.
equal
(
request2
.
headers
.
get
(
'
x-test
'
),
'
42
'
)
})
})
...
@@ -356,6 +356,18 @@ suite('Request', function() {
...
@@ -356,6 +356,18 @@ suite('Request', function() {
})
})
})
})
test
(
'
GET should not have implicit Content-Type
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
)
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
undefined
)
})
test
(
'
POST with blank body should not have implicit Content-Type
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
method
:
'
post
'
})
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
undefined
)
})
test
(
'
construct with string body sets Content-Type header
'
,
function
()
{
test
(
'
construct with string body sets Content-Type header
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
method
:
'
post
'
,
method
:
'
post
'
,
...
@@ -365,25 +377,33 @@ suite('Request', function() {
...
@@ -365,25 +377,33 @@ suite('Request', function() {
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
text/plain;charset=UTF-8
'
)
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
text/plain;charset=UTF-8
'
)
})
})
;(
Request
.
prototype
.
blob
?
test
:
test
.
skip
)(
'
construct with Blob body and type sets Content-Type header
'
,
function
()
{
featureDependent
(
test
,
support
.
blob
,
'
construct with Blob body and type sets Content-Type header
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
method
:
'
post
'
,
method
:
'
post
'
,
body
:
new
Blob
([
'
test
'
],
{
type
:
'
text/plain
'
}),
body
:
new
Blob
([
'
test
'
],
{
type
:
'
image/png
'
})
})
})
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
text/plain
'
)
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
image/png
'
)
})
})
test
(
'
construct with body and explicit header uses header
'
,
function
()
{
test
(
'
construct with body and explicit header uses header
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
method
:
'
post
'
,
method
:
'
post
'
,
headers
:
{
headers
:
{
'
Content-Type
'
:
'
image/png
'
},
'
Content-Type
'
:
'
text/plain
'
},
body
:
'
I work out
'
body
:
'
I work out
'
})
})
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
text/plain
'
)
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
image/png
'
)
})
featureDependent
(
test
,
support
.
blob
,
'
construct with Blob body and explicit Content-Type header
'
,
function
()
{
var
req
=
new
Request
(
'
https://fetch.spec.whatwg.org/
'
,
{
method
:
'
post
'
,
headers
:
{
'
Content-Type
'
:
'
image/png
'
},
body
:
new
Blob
([
'
test
'
],
{
type
:
'
text/plain
'
})
})
assert
.
equal
(
req
.
headers
.
get
(
'
content-type
'
),
'
image/png
'
)
})
})
test
(
'
clone request
'
,
function
()
{
test
(
'
clone request
'
,
function
()
{
...
@@ -564,7 +584,7 @@ suite('Response', function() {
...
@@ -564,7 +584,7 @@ suite('Response', function() {
assert
.
equal
(
r
.
headers
.
get
(
'
content-type
'
),
'
text/plain;charset=UTF-8
'
)
assert
.
equal
(
r
.
headers
.
get
(
'
content-type
'
),
'
text/plain;charset=UTF-8
'
)
})
})
;(
Response
.
prototype
.
blob
?
test
:
test
.
skip
)(
'
construct with Blob body and type sets Content-Type header
'
,
function
()
{
featureDependent
(
test
,
support
.
blob
,
'
construct with Blob body and type sets Content-Type header
'
,
function
()
{
var
r
=
new
Response
(
new
Blob
([
'
test
'
],
{
type
:
'
text/plain
'
}))
var
r
=
new
Response
(
new
Blob
([
'
test
'
],
{
type
:
'
text/plain
'
}))
assert
.
equal
(
r
.
headers
.
get
(
'
content-type
'
),
'
text/plain
'
)
assert
.
equal
(
r
.
headers
.
get
(
'
content-type
'
),
'
text/plain
'
)
})
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录