일반 javascript, html에서는 request header를 수정할 수 없다.
따라서, XMLHttpRequest 의 setRequestHeader를 이용해서 수정해야 한다.
예를 들어 form 에서 특정 action을 일으키게 하는데. 상황에 따라서 request header를 고쳐서 날려야 한다면..
javascript로 form에서 action을 일으키게 하고, XMLHttpRequest를 이용해서 request header를 고치면 될 것!
http://www.w3.org/TR/XMLHttpRequest/
3.6.2. The setRequestHeader()
method
- client .
setRequestHeader(header, value)
-
Appends an header to the list of author request headers or if the header is already in the author request headers its value appended to.
Throws an
INVALID_STATE_ERR
exception if the state is not OPENED or if thesend()
flag is true.Throws a
SYNTAX_ERR
exception if header is not a valid HTTP header field name or if value is not a valid HTTP header field value.
As indicated in the algorithm below certain headers cannot be set and are left up to the user agent. In addition there are certain other headers the user agent will take control of if they are not set by the author as indicated at the end of the send()
method section.
When the setRequestHeader(header, value)
method is invoked, the user agent must run these steps:
-
If the state is not OPENED raise an
INVALID_STATE_ERR
exception and terminate these steps. -
If the
send()
flag is true raise anINVALID_STATE_ERR
exception and terminate these steps. -
If any code point in header is higher than U+00FF LATIN SMALL LETTER Y WITH DIAERESIS or after deflating header it does not match the field-name production raise a
SYNTAX_ERR
exception and terminate these steps. Otherwise let header be the result of deflating header. -
If any code point in value is higher than U+00FF LATIN SMALL LETTER Y WITH DIAERESIS or after deflating value it does not match the field-value production raise a
SYNTAX_ERR
exception and terminate these steps. Otherwise let value be the result of deflating value.The empty string is legal and represents the empty header value.
-
Terminate these steps if header is a case-insensitive match for one of the following headers:
Accept-Charset
Accept-Encoding
Connection
Content-Length
Cookie
Cookie2
Content-Transfer-Encoding
Date
Expect
Host
Keep-Alive
Referer
TE
Trailer
Transfer-Encoding
Upgrade
User-Agent
Via
… or if the start of header is a case-insensitive match for
Proxy-
orSec-
(including when header is justProxy-
orSec-
).The above headers are controlled by the user agent to let it control those aspects of transport. This guarantees data integrity to some extent. Header names starting with
Sec-
are not allowed to be set to allow new headers to be minted that are guaranteed not to come fromXMLHttpRequest
. -
If header is not in the author request headers list append header with its associated value to the list and terminate these steps.
-
If header is in the author request headers list either use multiple headers, combine the values or use a combination of those (section 4.2, RFC 2616). [RFC2616]
See also the send()
method regarding user agent header handling for caching, authentication, proxies, and cookies.
// The following script: var client = new XMLHttpRequest(); client.open('GET', 'demo.cgi'); client.setRequestHeader('X-Test', 'one'); client.setRequestHeader('X-Test', 'two'); client.send(); // ...would result in the following header being sent: ... X-Test: one, two ...
'Web service' 카테고리의 다른 글
REST 설명 (0) | 2010.09.16 |
---|---|
[Webwork 보안] Webwork의 OGNL을 이용한 보안공격 (0) | 2010.08.28 |
구글 Closure (0) | 2010.08.24 |
[보안] SQL Injection 공격 막기 - 아파치 모듈 이용 (0) | 2010.08.18 |
[Security] CSRF 공격 (0) | 2010.08.18 |