mirror of
https://github.com/actix/actix-extras.git
synced 2025-08-01 07:51:52 +02:00
Deploying to gh-pages from @ 8741cd32cc
🚀
This commit is contained in:
@@ -217,7 +217,7 @@
|
||||
<span id="216">216</span>
|
||||
<span id="217">217</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">convert</span>::<span class="ident">TryInto</span>, <span class="ident">rc</span>::<span class="ident">Rc</span>};
|
||||
<span class="kw">use</span> <span class="ident">std</span>::{<span class="ident">convert::TryInto</span>, <span class="ident">rc::Rc</span>};
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{
|
||||
<span class="ident">dev</span>::{<span class="ident">Service</span>, <span class="ident">ServiceRequest</span>, <span class="ident">ServiceResponse</span>},
|
||||
@@ -228,10 +228,10 @@
|
||||
},
|
||||
<span class="ident">HttpResponse</span>,
|
||||
};
|
||||
<span class="kw">use</span> <span class="ident">futures_util</span>::<span class="ident">future</span>::{<span class="ident">ok</span>, <span class="ident">Either</span>, <span class="ident">FutureExt</span> <span class="kw">as</span> <span class="kw">_</span>, <span class="ident">LocalBoxFuture</span>, <span class="ident">Ready</span>};
|
||||
<span class="kw">use</span> <span class="ident">log</span>::<span class="ident">debug</span>;
|
||||
<span class="kw">use</span> <span class="ident">futures_util::future</span>::{<span class="ident">ok</span>, <span class="ident">Either</span>, <span class="ident">FutureExt</span> <span class="kw">as</span> <span class="kw">_</span>, <span class="ident">LocalBoxFuture</span>, <span class="ident">Ready</span>};
|
||||
<span class="kw">use</span> <span class="ident">log::debug</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">Inner</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::Inner</span>;
|
||||
|
||||
<span class="doccomment">/// Service wrapper for Cross-Origin Resource Sharing support.</span>
|
||||
<span class="doccomment">///</span>
|
||||
@@ -254,37 +254,37 @@
|
||||
<span class="kw">return</span> <span class="ident">req</span>.<span class="ident">error_response</span>(<span class="ident">err</span>);
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>();
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">HttpResponse::Ok</span>();
|
||||
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">origin</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">access_control_allow_origin</span>(<span class="ident">req</span>.<span class="ident">head</span>()) {
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_ORIGIN</span>, <span class="ident">origin</span>));
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header::ACCESS_CONTROL_ALLOW_ORIGIN</span>, <span class="ident">origin</span>));
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">allowed_methods</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">allowed_methods_baked</span> {
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((
|
||||
<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_METHODS</span>,
|
||||
<span class="ident">header::ACCESS_CONTROL_ALLOW_METHODS</span>,
|
||||
<span class="ident">allowed_methods</span>.<span class="ident">clone</span>(),
|
||||
));
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">headers</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">allowed_headers_baked</span> {
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_HEADERS</span>, <span class="ident">headers</span>.<span class="ident">clone</span>()));
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header::ACCESS_CONTROL_ALLOW_HEADERS</span>, <span class="ident">headers</span>.<span class="ident">clone</span>()));
|
||||
} <span class="kw">else</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">headers</span>) <span class="op">=</span>
|
||||
<span class="ident">req</span>.<span class="ident">headers</span>().<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_REQUEST_HEADERS</span>)
|
||||
<span class="ident">req</span>.<span class="ident">headers</span>().<span class="ident">get</span>(<span class="ident">header::ACCESS_CONTROL_REQUEST_HEADERS</span>)
|
||||
{
|
||||
<span class="comment">// all headers allowed, return</span>
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_HEADERS</span>, <span class="ident">headers</span>.<span class="ident">clone</span>()));
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header::ACCESS_CONTROL_ALLOW_HEADERS</span>, <span class="ident">headers</span>.<span class="ident">clone</span>()));
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="ident">inner</span>.<span class="ident">supports_credentials</span> {
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((
|
||||
<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_CREDENTIALS</span>,
|
||||
<span class="ident">HeaderValue</span>::<span class="ident">from_static</span>(<span class="string">"true"</span>),
|
||||
<span class="ident">header::ACCESS_CONTROL_ALLOW_CREDENTIALS</span>,
|
||||
<span class="ident">HeaderValue::from_static</span>(<span class="string">"true"</span>),
|
||||
));
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">max_age</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">max_age</span> {
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_MAX_AGE</span>, <span class="ident">max_age</span>.<span class="ident">to_string</span>()));
|
||||
<span class="ident">res</span>.<span class="ident">insert_header</span>((<span class="ident">header::ACCESS_CONTROL_MAX_AGE</span>, <span class="ident">max_age</span>.<span class="ident">to_string</span>()));
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">res</span>.<span class="ident">finish</span>();
|
||||
@@ -298,33 +298,33 @@
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span> {
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">origin</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">access_control_allow_origin</span>(<span class="ident">res</span>.<span class="ident">request</span>().<span class="ident">head</span>()) {
|
||||
<span class="ident">res</span>.<span class="ident">headers_mut</span>()
|
||||
.<span class="ident">insert</span>(<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_ORIGIN</span>, <span class="ident">origin</span>);
|
||||
.<span class="ident">insert</span>(<span class="ident">header::ACCESS_CONTROL_ALLOW_ORIGIN</span>, <span class="ident">origin</span>);
|
||||
};
|
||||
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="ident">expose</span>) <span class="op">=</span> <span class="ident">inner</span>.<span class="ident">expose_headers_baked</span> {
|
||||
<span class="ident">res</span>.<span class="ident">headers_mut</span>()
|
||||
.<span class="ident">insert</span>(<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_EXPOSE_HEADERS</span>, <span class="ident">expose</span>.<span class="ident">clone</span>());
|
||||
.<span class="ident">insert</span>(<span class="ident">header::ACCESS_CONTROL_EXPOSE_HEADERS</span>, <span class="ident">expose</span>.<span class="ident">clone</span>());
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="ident">inner</span>.<span class="ident">supports_credentials</span> {
|
||||
<span class="ident">res</span>.<span class="ident">headers_mut</span>().<span class="ident">insert</span>(
|
||||
<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_CREDENTIALS</span>,
|
||||
<span class="ident">HeaderValue</span>::<span class="ident">from_static</span>(<span class="string">"true"</span>),
|
||||
<span class="ident">header::ACCESS_CONTROL_ALLOW_CREDENTIALS</span>,
|
||||
<span class="ident">HeaderValue::from_static</span>(<span class="string">"true"</span>),
|
||||
);
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="ident">inner</span>.<span class="ident">vary_header</span> {
|
||||
<span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">res</span>.<span class="ident">headers_mut</span>().<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">VARY</span>) {
|
||||
<span class="kw">let</span> <span class="ident">value</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">res</span>.<span class="ident">headers_mut</span>().<span class="ident">get</span>(<span class="ident">header::VARY</span>) {
|
||||
<span class="prelude-val">Some</span>(<span class="ident">hdr</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">with_capacity</span>(<span class="ident">hdr</span>.<span class="ident">len</span>() <span class="op">+</span> <span class="number">8</span>);
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">val</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u8</span><span class="op">></span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">hdr</span>.<span class="ident">len</span>() <span class="op">+</span> <span class="number">8</span>);
|
||||
<span class="ident">val</span>.<span class="ident">extend</span>(<span class="ident">hdr</span>.<span class="ident">as_bytes</span>());
|
||||
<span class="ident">val</span>.<span class="ident">extend</span>(<span class="string">b", Origin"</span>);
|
||||
<span class="ident">val</span>.<span class="ident">try_into</span>().<span class="ident">unwrap</span>()
|
||||
}
|
||||
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">></span> <span class="ident">HeaderValue</span>::<span class="ident">from_static</span>(<span class="string">"Origin"</span>),
|
||||
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">></span> <span class="ident">HeaderValue::from_static</span>(<span class="string">"Origin"</span>),
|
||||
};
|
||||
|
||||
<span class="ident">res</span>.<span class="ident">headers_mut</span>().<span class="ident">insert</span>(<span class="ident">header</span>::<span class="ident">VARY</span>, <span class="ident">value</span>);
|
||||
<span class="ident">res</span>.<span class="ident">headers_mut</span>().<span class="ident">insert</span>(<span class="ident">header::VARY</span>, <span class="ident">value</span>);
|
||||
}
|
||||
|
||||
<span class="ident">res</span>
|
||||
@@ -339,32 +339,32 @@
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="ident">S</span>, <span class="ident">B</span><span class="op">></span> <span class="ident">Service</span><span class="op"><</span><span class="ident">ServiceRequest</span><span class="op">></span> <span class="kw">for</span> <span class="ident">CorsMiddleware</span><span class="op"><</span><span class="ident">S</span><span class="op">></span>
|
||||
<span class="kw">where</span>
|
||||
<span class="ident">S</span>: <span class="ident">Service</span><span class="op"><</span><span class="ident">ServiceRequest</span>, <span class="ident">Response</span> <span class="op">=</span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>, <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span><span class="op">></span>,
|
||||
<span class="ident">S</span>::<span class="ident">Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">S::Future</span>: <span class="lifetime">'static</span>,
|
||||
<span class="ident">B</span>: <span class="lifetime">'static</span>,
|
||||
{
|
||||
<span class="kw">type</span> <span class="ident">Response</span> <span class="op">=</span> <span class="ident">ServiceResponse</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>;
|
||||
<span class="kw">type</span> <span class="ident">Error</span> <span class="op">=</span> <span class="ident">Error</span>;
|
||||
<span class="kw">type</span> <span class="ident">Future</span> <span class="op">=</span> <span class="ident">CorsMiddlewareServiceFuture</span><span class="op"><</span><span class="ident">B</span><span class="op">></span>;
|
||||
|
||||
<span class="ident">actix_service</span>::<span class="macro">forward_ready</span><span class="macro">!</span>(<span class="ident">service</span>);
|
||||
<span class="macro">actix_service::forward_ready!</span>(<span class="ident">service</span>);
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">call</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span>::<span class="ident">Future</span> {
|
||||
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">inner</span>.<span class="ident">preflight</span> <span class="op">&&</span> <span class="ident">req</span>.<span class="ident">method</span>() <span class="op">=</span><span class="op">=</span> <span class="ident">Method</span>::<span class="ident">OPTIONS</span> {
|
||||
<span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>);
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">handle_preflight</span>(<span class="kw-2">&</span><span class="ident">inner</span>, <span class="ident">req</span>);
|
||||
<span class="ident">Either</span>::<span class="ident">Left</span>(<span class="ident">ok</span>(<span class="ident">res</span>))
|
||||
<span class="kw">fn</span> <span class="ident">call</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">req</span>: <span class="ident">ServiceRequest</span>) <span class="op">-</span><span class="op">></span> <span class="self">Self</span><span class="ident">::Future</span> {
|
||||
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">inner</span>.<span class="ident">preflight</span> <span class="op">&&</span> <span class="ident">req</span>.<span class="ident">method</span>() <span class="op">=</span><span class="op">=</span> <span class="ident">Method::OPTIONS</span> {
|
||||
<span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>);
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="self">Self</span><span class="ident">::handle_preflight</span>(<span class="kw-2">&</span><span class="ident">inner</span>, <span class="ident">req</span>);
|
||||
<span class="ident">Either::Left</span>(<span class="ident">ok</span>(<span class="ident">res</span>))
|
||||
} <span class="kw">else</span> {
|
||||
<span class="kw">let</span> <span class="ident">origin</span> <span class="op">=</span> <span class="ident">req</span>.<span class="ident">headers</span>().<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">ORIGIN</span>).<span class="ident">cloned</span>();
|
||||
<span class="kw">let</span> <span class="ident">origin</span> <span class="op">=</span> <span class="ident">req</span>.<span class="ident">headers</span>().<span class="ident">get</span>(<span class="ident">header::ORIGIN</span>).<span class="ident">cloned</span>();
|
||||
|
||||
<span class="kw">if</span> <span class="ident">origin</span>.<span class="ident">is_some</span>() {
|
||||
<span class="comment">// Only check requests with a origin header.</span>
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">err</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">inner</span>.<span class="ident">validate_origin</span>(<span class="ident">req</span>.<span class="ident">head</span>()) {
|
||||
<span class="macro">debug</span><span class="macro">!</span>(<span class="string">"origin validation failed; inner service is not called"</span>);
|
||||
<span class="kw">return</span> <span class="ident">Either</span>::<span class="ident">Left</span>(<span class="ident">ok</span>(<span class="ident">req</span>.<span class="ident">error_response</span>(<span class="ident">err</span>)));
|
||||
<span class="macro">debug!</span>(<span class="string">"origin validation failed; inner service is not called"</span>);
|
||||
<span class="kw">return</span> <span class="ident">Either::Left</span>(<span class="ident">ok</span>(<span class="ident">req</span>.<span class="ident">error_response</span>(<span class="ident">err</span>)));
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="ident">Rc</span>::<span class="ident">clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>);
|
||||
<span class="kw">let</span> <span class="ident">inner</span> <span class="op">=</span> <span class="ident">Rc::clone</span>(<span class="kw-2">&</span><span class="self">self</span>.<span class="ident">inner</span>);
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">service</span>.<span class="ident">call</span>(<span class="ident">req</span>);
|
||||
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="kw">async</span> <span class="kw">move</span> {
|
||||
@@ -372,14 +372,14 @@
|
||||
|
||||
<span class="kw">if</span> <span class="ident">origin</span>.<span class="ident">is_some</span>() {
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">res</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="self">Self</span>::<span class="ident">augment_response</span>(<span class="kw-2">&</span><span class="ident">inner</span>, <span class="ident">res</span>))
|
||||
<span class="prelude-val">Ok</span>(<span class="self">Self</span><span class="ident">::augment_response</span>(<span class="kw-2">&</span><span class="ident">inner</span>, <span class="ident">res</span>))
|
||||
} <span class="kw">else</span> {
|
||||
<span class="ident">res</span>
|
||||
}
|
||||
}
|
||||
.<span class="ident">boxed_local</span>();
|
||||
|
||||
<span class="ident">Either</span>::<span class="ident">Right</span>(<span class="ident">res</span>)
|
||||
<span class="ident">Either::Right</span>(<span class="ident">res</span>)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -387,50 +387,50 @@
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">mod</span> <span class="ident">tests</span> {
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{
|
||||
<span class="ident">dev</span>::<span class="ident">Transform</span>,
|
||||
<span class="ident">dev::Transform</span>,
|
||||
<span class="ident">test</span>::{<span class="self">self</span>, <span class="ident">TestRequest</span>},
|
||||
};
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">Cors</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::Cors</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">actix_rt</span>::<span class="ident">test</span>]</span>
|
||||
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">test_options_no_origin</span>() {
|
||||
<span class="comment">// Tests case where allowed_origins is All but there are validate functions to run incase.</span>
|
||||
<span class="comment">// In this case, origins are only allowed when the DNT header is sent.</span>
|
||||
|
||||
<span class="kw">let</span> <span class="ident">cors</span> <span class="op">=</span> <span class="ident">Cors</span>::<span class="ident">default</span>()
|
||||
<span class="kw">let</span> <span class="ident">cors</span> <span class="op">=</span> <span class="ident">Cors::default</span>()
|
||||
.<span class="ident">allow_any_origin</span>()
|
||||
.<span class="ident">allowed_origin_fn</span>(<span class="op">|</span><span class="ident">origin</span>, <span class="ident">req_head</span><span class="op">|</span> {
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&</span><span class="ident">origin</span>, <span class="ident">req_head</span>.<span class="ident">headers</span>.<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">ORIGIN</span>).<span class="ident">unwrap</span>());
|
||||
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span><span class="ident">origin</span>, <span class="ident">req_head</span>.<span class="ident">headers</span>.<span class="ident">get</span>(<span class="ident">header::ORIGIN</span>).<span class="ident">unwrap</span>());
|
||||
|
||||
<span class="ident">req_head</span>.<span class="ident">headers</span>().<span class="ident">contains_key</span>(<span class="ident">header</span>::<span class="ident">DNT</span>)
|
||||
<span class="ident">req_head</span>.<span class="ident">headers</span>().<span class="ident">contains_key</span>(<span class="ident">header::DNT</span>)
|
||||
})
|
||||
.<span class="ident">new_transform</span>(<span class="ident">test</span>::<span class="ident">ok_service</span>())
|
||||
.<span class="ident">new_transform</span>(<span class="ident">test::ok_service</span>())
|
||||
.<span class="kw">await</span>
|
||||
.<span class="ident">unwrap</span>();
|
||||
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">TestRequest</span>::<span class="ident">get</span>()
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ORIGIN</span>, <span class="string">"http://example.com"</span>))
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">TestRequest::get</span>()
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header::ORIGIN</span>, <span class="string">"http://example.com"</span>))
|
||||
.<span class="ident">to_srv_request</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">cors</span>.<span class="ident">call</span>(<span class="ident">req</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||||
<span class="macro">assert_eq!</span>(
|
||||
<span class="prelude-val">None</span>,
|
||||
<span class="ident">res</span>.<span class="ident">headers</span>()
|
||||
.<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_ORIGIN</span>)
|
||||
.<span class="ident">map</span>(<span class="ident">HeaderValue</span>::<span class="ident">as_bytes</span>)
|
||||
.<span class="ident">get</span>(<span class="ident">header::ACCESS_CONTROL_ALLOW_ORIGIN</span>)
|
||||
.<span class="ident">map</span>(<span class="ident">HeaderValue::as_bytes</span>)
|
||||
);
|
||||
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">TestRequest</span>::<span class="ident">get</span>()
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">ORIGIN</span>, <span class="string">"http://example.com"</span>))
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header</span>::<span class="ident">DNT</span>, <span class="string">"1"</span>))
|
||||
<span class="kw">let</span> <span class="ident">req</span> <span class="op">=</span> <span class="ident">TestRequest::get</span>()
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header::ORIGIN</span>, <span class="string">"http://example.com"</span>))
|
||||
.<span class="ident">insert_header</span>((<span class="ident">header::DNT</span>, <span class="string">"1"</span>))
|
||||
.<span class="ident">to_srv_request</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">cors</span>.<span class="ident">call</span>(<span class="ident">req</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(
|
||||
<span class="macro">assert_eq!</span>(
|
||||
<span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">b"http://example.com"</span>[..]),
|
||||
<span class="ident">res</span>.<span class="ident">headers</span>()
|
||||
.<span class="ident">get</span>(<span class="ident">header</span>::<span class="ident">ACCESS_CONTROL_ALLOW_ORIGIN</span>)
|
||||
.<span class="ident">map</span>(<span class="ident">HeaderValue</span>::<span class="ident">as_bytes</span>)
|
||||
.<span class="ident">get</span>(<span class="ident">header::ACCESS_CONTROL_ALLOW_ORIGIN</span>)
|
||||
.<span class="ident">map</span>(<span class="ident">HeaderValue::as_bytes</span>)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user