модифицировать исходный код хрома - плохая идея, для этой задачи вы можете просто создать расширение для изменения заголовков запроса, без аргумента -disable-web-security
Создать папку с именем, например headers_ext
, и добавить следующие файлы
manifest.json
{
"manifest_version": 2,
"name": "Modify Request Headers",
"version": "1.0",
"permissions": [
"webRequest",
"webRequestBlocking",
"<all_urls>",
"tabs",
"webNavigation"
],
"background": {
"scripts": ["background.js"]
}
}
backround.js
function modifyRequestHeaders(request) {
for (var headers = request.requestHeaders, i = 0; i < headers.length; ++i) {
if (headers[i].name.toLowerCase() == 'accept') {
// set Cookie from 'Accept' header value
headers.push({"name" : "Cookie", "value" : headers[i].value});
// normalize 'Accept' header value
headers[i].value = '*/*';
}
}
return {requestHeaders: headers};
}
function modifyResponseHeaders(response) {
for (var headers = response.responseHeaders, i = 0; i < headers.length; ++i) {
if (headers[i].name.toLowerCase() == 'access-control-allow-origin') {
headers.splice(i, 1);
break;
}
}
// Allow cross domain
headers.push({"name": "Access-Control-Allow-Origin", "value": "*"});
return {responseHeaders: headers};
}
var webRequestOptions = {urls: ["<all_urls>"], types: ["xmlhttprequest"]};
chrome.webRequest.onBeforeSendHeaders.addListener(modifyRequestHeaders,
webRequestOptions, ["blocking", "requestHeaders", 'extraHeaders']);
chrome.webRequest.onHeadersReceived.addListener(modifyResponseHeaders,
webRequestOptions, ["blocking", "responseHeaders"]);
Теперь на странице расширения Chrome нажмите Load unpacked extension
и найдите каталог.
вышеприведенное расширение будет изменять только заголовки запроса xmlhttprequest
и использовать значение заголовка Accept
для значения Cookie
, а также изменять заголовок ответа, чтобы разрешить междоменный запрос, добавив заголовокAccess-Control-Allow-Origin: *
.
Для Chrome кажется, что заголовки DPR, Downlink, Save-Data, Viewport-Width, Width
еще не находятся в безопасном списке, поэтому вместо них я использую заголовок Accept
, чтобы избежать запроса OPTIONS
или Preflight
, поскольку многие веб-сайтыне поддерживает этоИ extraHeaders
- это фильтр, позволяющий изменять или создавать Cookie
.
. Для получения дополнительной информации о CORS прочитайте здесь
. Убедитесь, что вы используете последнюю версию Chrome, и создайте запрос.как это
$.ajax({
url: 'https://example.com',
type: 'POST', // or GET or HEAD
headers: {
// it will used for 'Cookie' value by extension
'Accept': "cookieName=cookieValue"
}
});