header-link.https.sub.html (17777B)
1 <!DOCTYPE html> 2 <!-- 3 This test was procedurally generated. Please do not modify it directly. 4 Sources: 5 - fetch/metadata/tools/fetch-metadata.conf.yml 6 - fetch/metadata/tools/templates/header-link.sub.html 7 --> 8 <html lang="en"> 9 <meta charset="utf-8"> 10 <title>HTTP headers on request for HTTP "Link" header</title> 11 <script src="/resources/testharness.js"></script> 12 <script src="/resources/testharnessreport.js"></script> 13 <script src="/fetch/metadata/resources/helper.sub.js"></script> 14 <body> 15 <script> 16 'use strict'; 17 18 function induceRequest(url, rel, test) { 19 const iframe = document.createElement('iframe'); 20 21 iframe.setAttribute( 22 'src', 23 '/fetch/metadata/resources/header-link.py' + 24 `?location=${encodeURIComponent(url)}&rel=${rel}` 25 ); 26 27 document.body.appendChild(iframe); 28 test.add_cleanup(() => iframe.remove()); 29 30 return new Promise((resolve) => { 31 iframe.onload = iframe.onerror = resolve; 32 }); 33 } 34 35 promise_test((t) => { 36 const key = '{{uuid()}}'; 37 38 return induceRequest( 39 makeRequestURL(key, ['httpsOrigin'], {mime: 'text/html'}), 40 'icon', 41 t 42 ) 43 .then(() => retrieve(key)) 44 .then((headers) => { 45 assert_own_property(headers, 'sec-fetch-site'); 46 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 47 }); 48 }, 'sec-fetch-site rel=icon - Same origin'); 49 50 promise_test((t) => { 51 const key = '{{uuid()}}'; 52 53 return induceRequest( 54 makeRequestURL(key, ['httpsOrigin'], {mime: 'text/html'}), 55 'stylesheet', 56 t 57 ) 58 .then(() => retrieve(key)) 59 .then((headers) => { 60 assert_own_property(headers, 'sec-fetch-site'); 61 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 62 }); 63 }, 'sec-fetch-site rel=stylesheet - Same origin'); 64 65 promise_test((t) => { 66 const key = '{{uuid()}}'; 67 68 return induceRequest( 69 makeRequestURL(key, ['httpsCrossSite'], {mime: 'text/html'}), 70 'icon', 71 t 72 ) 73 .then(() => retrieve(key)) 74 .then((headers) => { 75 assert_own_property(headers, 'sec-fetch-site'); 76 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 77 }); 78 }, 'sec-fetch-site rel=icon - Cross-site'); 79 80 promise_test((t) => { 81 const key = '{{uuid()}}'; 82 83 return induceRequest( 84 makeRequestURL(key, ['httpsCrossSite'], {mime: 'text/html'}), 85 'stylesheet', 86 t 87 ) 88 .then(() => retrieve(key)) 89 .then((headers) => { 90 assert_own_property(headers, 'sec-fetch-site'); 91 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 92 }); 93 }, 'sec-fetch-site rel=stylesheet - Cross-site'); 94 95 promise_test((t) => { 96 const key = '{{uuid()}}'; 97 98 return induceRequest( 99 makeRequestURL(key, ['httpsSameSite'], {mime: 'text/html'}), 100 'icon', 101 t 102 ) 103 .then(() => retrieve(key)) 104 .then((headers) => { 105 assert_own_property(headers, 'sec-fetch-site'); 106 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 107 }); 108 }, 'sec-fetch-site rel=icon - Same site'); 109 110 promise_test((t) => { 111 const key = '{{uuid()}}'; 112 113 return induceRequest( 114 makeRequestURL(key, ['httpsSameSite'], {mime: 'text/html'}), 115 'stylesheet', 116 t 117 ) 118 .then(() => retrieve(key)) 119 .then((headers) => { 120 assert_own_property(headers, 'sec-fetch-site'); 121 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 122 }); 123 }, 'sec-fetch-site rel=stylesheet - Same site'); 124 125 promise_test((t) => { 126 const key = '{{uuid()}}'; 127 128 return induceRequest( 129 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin'], {mime: 'text/html'}), 130 'icon', 131 t 132 ) 133 .then(() => retrieve(key)) 134 .then((headers) => { 135 assert_own_property(headers, 'sec-fetch-site'); 136 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 137 }); 138 }, 'sec-fetch-site rel=icon - Same-Origin -> Cross-Site -> Same-Origin redirect'); 139 140 promise_test((t) => { 141 const key = '{{uuid()}}'; 142 143 return induceRequest( 144 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin'], {mime: 'text/html'}), 145 'stylesheet', 146 t 147 ) 148 .then(() => retrieve(key)) 149 .then((headers) => { 150 assert_own_property(headers, 'sec-fetch-site'); 151 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 152 }); 153 }, 'sec-fetch-site rel=stylesheet - Same-Origin -> Cross-Site -> Same-Origin redirect'); 154 155 promise_test((t) => { 156 const key = '{{uuid()}}'; 157 158 return induceRequest( 159 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin'], {mime: 'text/html'}), 160 'icon', 161 t 162 ) 163 .then(() => retrieve(key)) 164 .then((headers) => { 165 assert_own_property(headers, 'sec-fetch-site'); 166 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 167 }); 168 }, 'sec-fetch-site rel=icon - Same-Origin -> Same-Site -> Same-Origin redirect'); 169 170 promise_test((t) => { 171 const key = '{{uuid()}}'; 172 173 return induceRequest( 174 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin'], {mime: 'text/html'}), 175 'stylesheet', 176 t 177 ) 178 .then(() => retrieve(key)) 179 .then((headers) => { 180 assert_own_property(headers, 'sec-fetch-site'); 181 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 182 }); 183 }, 'sec-fetch-site rel=stylesheet - Same-Origin -> Same-Site -> Same-Origin redirect'); 184 185 promise_test((t) => { 186 const key = '{{uuid()}}'; 187 188 return induceRequest( 189 makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin'], {mime: 'text/html'}), 190 'icon', 191 t 192 ) 193 .then(() => retrieve(key)) 194 .then((headers) => { 195 assert_own_property(headers, 'sec-fetch-site'); 196 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 197 }); 198 }, 'sec-fetch-site rel=icon - Cross-Site -> Same Origin'); 199 200 promise_test((t) => { 201 const key = '{{uuid()}}'; 202 203 return induceRequest( 204 makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin'], {mime: 'text/html'}), 205 'stylesheet', 206 t 207 ) 208 .then(() => retrieve(key)) 209 .then((headers) => { 210 assert_own_property(headers, 'sec-fetch-site'); 211 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 212 }); 213 }, 'sec-fetch-site rel=stylesheet - Cross-Site -> Same Origin'); 214 215 promise_test((t) => { 216 const key = '{{uuid()}}'; 217 218 return induceRequest( 219 makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite'], {mime: 'text/html'}), 220 'icon', 221 t 222 ) 223 .then(() => retrieve(key)) 224 .then((headers) => { 225 assert_own_property(headers, 'sec-fetch-site'); 226 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 227 }); 228 }, 'sec-fetch-site rel=icon - Cross-Site -> Same-Site'); 229 230 promise_test((t) => { 231 const key = '{{uuid()}}'; 232 233 return induceRequest( 234 makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite'], {mime: 'text/html'}), 235 'stylesheet', 236 t 237 ) 238 .then(() => retrieve(key)) 239 .then((headers) => { 240 assert_own_property(headers, 'sec-fetch-site'); 241 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 242 }); 243 }, 'sec-fetch-site rel=stylesheet - Cross-Site -> Same-Site'); 244 245 promise_test((t) => { 246 const key = '{{uuid()}}'; 247 248 return induceRequest( 249 makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite'], {mime: 'text/html'}), 250 'icon', 251 t 252 ) 253 .then(() => retrieve(key)) 254 .then((headers) => { 255 assert_own_property(headers, 'sec-fetch-site'); 256 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 257 }); 258 }, 'sec-fetch-site rel=icon - Cross-Site -> Cross-Site'); 259 260 promise_test((t) => { 261 const key = '{{uuid()}}'; 262 263 return induceRequest( 264 makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite'], {mime: 'text/html'}), 265 'stylesheet', 266 t 267 ) 268 .then(() => retrieve(key)) 269 .then((headers) => { 270 assert_own_property(headers, 'sec-fetch-site'); 271 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 272 }); 273 }, 'sec-fetch-site rel=stylesheet - Cross-Site -> Cross-Site'); 274 275 promise_test((t) => { 276 const key = '{{uuid()}}'; 277 278 return induceRequest( 279 makeRequestURL(key, ['httpsOrigin', 'httpsOrigin'], {mime: 'text/html'}), 280 'icon', 281 t 282 ) 283 .then(() => retrieve(key)) 284 .then((headers) => { 285 assert_own_property(headers, 'sec-fetch-site'); 286 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 287 }); 288 }, 'sec-fetch-site rel=icon - Same-Origin -> Same Origin'); 289 290 promise_test((t) => { 291 const key = '{{uuid()}}'; 292 293 return induceRequest( 294 makeRequestURL(key, ['httpsOrigin', 'httpsOrigin'], {mime: 'text/html'}), 295 'stylesheet', 296 t 297 ) 298 .then(() => retrieve(key)) 299 .then((headers) => { 300 assert_own_property(headers, 'sec-fetch-site'); 301 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 302 }); 303 }, 'sec-fetch-site rel=stylesheet - Same-Origin -> Same Origin'); 304 305 promise_test((t) => { 306 const key = '{{uuid()}}'; 307 308 return induceRequest( 309 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite'], {mime: 'text/html'}), 310 'icon', 311 t 312 ) 313 .then(() => retrieve(key)) 314 .then((headers) => { 315 assert_own_property(headers, 'sec-fetch-site'); 316 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 317 }); 318 }, 'sec-fetch-site rel=icon - Same-Origin -> Same-Site'); 319 320 promise_test((t) => { 321 const key = '{{uuid()}}'; 322 323 return induceRequest( 324 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite'], {mime: 'text/html'}), 325 'stylesheet', 326 t 327 ) 328 .then(() => retrieve(key)) 329 .then((headers) => { 330 assert_own_property(headers, 'sec-fetch-site'); 331 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 332 }); 333 }, 'sec-fetch-site rel=stylesheet - Same-Origin -> Same-Site'); 334 335 promise_test((t) => { 336 const key = '{{uuid()}}'; 337 338 return induceRequest( 339 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite'], {mime: 'text/html'}), 340 'icon', 341 t 342 ) 343 .then(() => retrieve(key)) 344 .then((headers) => { 345 assert_own_property(headers, 'sec-fetch-site'); 346 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 347 }); 348 }, 'sec-fetch-site rel=icon - Same-Origin -> Cross-Site'); 349 350 promise_test((t) => { 351 const key = '{{uuid()}}'; 352 353 return induceRequest( 354 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite'], {mime: 'text/html'}), 355 'stylesheet', 356 t 357 ) 358 .then(() => retrieve(key)) 359 .then((headers) => { 360 assert_own_property(headers, 'sec-fetch-site'); 361 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 362 }); 363 }, 'sec-fetch-site rel=stylesheet - Same-Origin -> Cross-Site'); 364 365 promise_test((t) => { 366 const key = '{{uuid()}}'; 367 368 return induceRequest( 369 makeRequestURL(key, ['httpsSameSite', 'httpsOrigin'], {mime: 'text/html'}), 370 'icon', 371 t 372 ) 373 .then(() => retrieve(key)) 374 .then((headers) => { 375 assert_own_property(headers, 'sec-fetch-site'); 376 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 377 }); 378 }, 'sec-fetch-site rel=icon - Same-Site -> Same Origin'); 379 380 promise_test((t) => { 381 const key = '{{uuid()}}'; 382 383 return induceRequest( 384 makeRequestURL(key, ['httpsSameSite', 'httpsOrigin'], {mime: 'text/html'}), 385 'stylesheet', 386 t 387 ) 388 .then(() => retrieve(key)) 389 .then((headers) => { 390 assert_own_property(headers, 'sec-fetch-site'); 391 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 392 }); 393 }, 'sec-fetch-site rel=stylesheet - Same-Site -> Same Origin'); 394 395 promise_test((t) => { 396 const key = '{{uuid()}}'; 397 398 return induceRequest( 399 makeRequestURL(key, ['httpsSameSite', 'httpsSameSite'], {mime: 'text/html'}), 400 'icon', 401 t 402 ) 403 .then(() => retrieve(key)) 404 .then((headers) => { 405 assert_own_property(headers, 'sec-fetch-site'); 406 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 407 }); 408 }, 'sec-fetch-site rel=icon - Same-Site -> Same-Site'); 409 410 promise_test((t) => { 411 const key = '{{uuid()}}'; 412 413 return induceRequest( 414 makeRequestURL(key, ['httpsSameSite', 'httpsSameSite'], {mime: 'text/html'}), 415 'stylesheet', 416 t 417 ) 418 .then(() => retrieve(key)) 419 .then((headers) => { 420 assert_own_property(headers, 'sec-fetch-site'); 421 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 422 }); 423 }, 'sec-fetch-site rel=stylesheet - Same-Site -> Same-Site'); 424 425 promise_test((t) => { 426 const key = '{{uuid()}}'; 427 428 return induceRequest( 429 makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite'], {mime: 'text/html'}), 430 'icon', 431 t 432 ) 433 .then(() => retrieve(key)) 434 .then((headers) => { 435 assert_own_property(headers, 'sec-fetch-site'); 436 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 437 }); 438 }, 'sec-fetch-site rel=icon - Same-Site -> Cross-Site'); 439 440 promise_test((t) => { 441 const key = '{{uuid()}}'; 442 443 return induceRequest( 444 makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite'], {mime: 'text/html'}), 445 'stylesheet', 446 t 447 ) 448 .then(() => retrieve(key)) 449 .then((headers) => { 450 assert_own_property(headers, 'sec-fetch-site'); 451 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 452 }); 453 }, 'sec-fetch-site rel=stylesheet - Same-Site -> Cross-Site'); 454 455 promise_test((t) => { 456 const key = '{{uuid()}}'; 457 458 return induceRequest( 459 makeRequestURL(key, [], {mime: 'text/html'}), 460 'icon', 461 t 462 ) 463 .then(() => retrieve(key)) 464 .then((headers) => { 465 assert_own_property(headers, 'sec-fetch-mode'); 466 assert_array_equals(headers['sec-fetch-mode'], ['no-cors']); 467 }); 468 }, 'sec-fetch-mode rel=icon'); 469 470 promise_test((t) => { 471 const key = '{{uuid()}}'; 472 473 return induceRequest( 474 makeRequestURL(key, [], {mime: 'text/html'}), 475 'stylesheet', 476 t 477 ) 478 .then(() => retrieve(key)) 479 .then((headers) => { 480 assert_own_property(headers, 'sec-fetch-mode'); 481 assert_array_equals(headers['sec-fetch-mode'], ['no-cors']); 482 }); 483 }, 'sec-fetch-mode rel=stylesheet'); 484 485 promise_test((t) => { 486 const key = '{{uuid()}}'; 487 488 return induceRequest( 489 makeRequestURL(key, [], {mime: 'text/html'}), 490 'icon', 491 t 492 ) 493 .then(() => retrieve(key)) 494 .then((headers) => { 495 assert_own_property(headers, 'sec-fetch-dest'); 496 assert_array_equals(headers['sec-fetch-dest'], ['empty']); 497 }); 498 }, 'sec-fetch-dest rel=icon'); 499 500 promise_test((t) => { 501 const key = '{{uuid()}}'; 502 503 return induceRequest( 504 makeRequestURL(key, [], {mime: 'text/html'}), 505 'icon', 506 t 507 ) 508 .then(() => retrieve(key)) 509 .then((headers) => { 510 assert_not_own_property(headers, 'sec-fetch-user'); 511 }); 512 }, 'sec-fetch-user rel=icon'); 513 514 promise_test((t) => { 515 const key = '{{uuid()}}'; 516 517 return induceRequest( 518 makeRequestURL(key, [], {mime: 'text/html'}), 519 'stylesheet', 520 t 521 ) 522 .then(() => retrieve(key)) 523 .then((headers) => { 524 assert_not_own_property(headers, 'sec-fetch-user'); 525 }); 526 }, 'sec-fetch-user rel=stylesheet'); 527 528 promise_test((t) => { 529 const key = '{{uuid()}}'; 530 531 return induceRequest( 532 makeRequestURL(key, ['httpsCrossSite'], {mime: 'text/html'}), 533 'icon', 534 t 535 ) 536 .then(() => retrieve(key)) 537 .then((headers) => { 538 assert_own_property(headers, 'sec-fetch-storage-access'); 539 assert_array_equals(headers['sec-fetch-storage-access'], ['none']); 540 }); 541 }, 'sec-fetch-storage-access rel=icon - Cross-site'); 542 543 promise_test((t) => { 544 const key = '{{uuid()}}'; 545 546 return induceRequest( 547 makeRequestURL(key, ['httpsCrossSite'], {mime: 'text/html'}), 548 'stylesheet', 549 t 550 ) 551 .then(() => retrieve(key)) 552 .then((headers) => { 553 assert_own_property(headers, 'sec-fetch-storage-access'); 554 assert_array_equals(headers['sec-fetch-storage-access'], ['none']); 555 }); 556 }, 'sec-fetch-storage-access rel=stylesheet - Cross-site'); 557 558 promise_test((t) => { 559 const key = '{{uuid()}}'; 560 561 return induceRequest( 562 makeRequestURL(key, ['httpsSameSite'], {mime: 'text/html'}), 563 'icon', 564 t 565 ) 566 .then(() => retrieve(key)) 567 .then((headers) => { 568 assert_not_own_property(headers, 'sec-fetch-storage-access'); 569 }); 570 }, 'sec-fetch-storage-access rel=icon - Same site'); 571 572 promise_test((t) => { 573 const key = '{{uuid()}}'; 574 575 return induceRequest( 576 makeRequestURL(key, ['httpsSameSite'], {mime: 'text/html'}), 577 'stylesheet', 578 t 579 ) 580 .then(() => retrieve(key)) 581 .then((headers) => { 582 assert_not_own_property(headers, 'sec-fetch-storage-access'); 583 }); 584 }, 'sec-fetch-storage-access rel=stylesheet - Same site'); 585 </script> 586 </body> 587 </html>