Код: Выделить всё
Access to XMLHttpRequest at 'https://script.google.com/macros/s//exec' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.Приложения скрипты:
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
.setTitle('PokeQuest DB')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
function doPost(request) {
Logger.log("doPost function triggered.");
try {
var requestData = JSON.parse(request.postData.contents);
} catch (e) {
Logger.log("Error parsing POST payload: " + e.message);
return httpResponse(error(400, "invalid_post_payload", {
payload: request.postData && request.postData.contents,
type: request.postData && request.postData.type,
message: e && e.message
}));
}
// Batch or single
if (Array.isArray(requestData)) {
Logger.log("Handling batch request with " + requestData.length + " items.");
var result = requestData.map(handleRequest);
return httpResponse(result);
}
Logger.log("Handling single request.");
return httpResponse(handleRequest(requestData));
}
function httpResponse(obj) {
const out = ContentService.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
// If CORS is enabled in the config, add the access control header.
if (ENABLE_CORS) {
out.addHttpHeader('Access-Control-Allow-Origin', CORS_ALLOW_ORIGIN);
out.addHttpHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
out.addHttpHeader('Access-Control-Allow-Headers', 'Content-Type, Accept');
}
return out;
}
const ENABLE_CORS = true;
const CORS_ALLOW_ORIGIN = "*"; // or your site origin
< /code>
jQuery: < /p>
_post(payload) {
return $.ajax({
url: this.scriptURL,
type: "POST",
contentType: "text/plain;charset=utf-8",
data: JSON.stringify(payload)
}).then(res => {
// If Apps Script returns a JSON string, parse it; otherwise trust jQuery
if (typeof res === "string") {
try { return JSON.parse(res); } catch { return res; }
}
return res;
});
}
< /code>
Это в основном вся настройка, которую я имею сейчас, и я не могу понять, почему браузер продолжает бросать эту ошибку Cors всякий раз, когда я пытаюсь поговорить с конечной точкой сценария Google Apps. Странно то, что запросы на самом деле преуспевают на стороне сервера, я вижу, что данные, записанные на лист Google, просто отлично, но в консоли браузера все еще выглядит так, как будто ответ блокируется из -за отсутствующих заголовков CORS. Я уже добавил, что в моей функции httpresponse-allow-allow-worly: * и другие обычные заголовки в моей функции httpresponse, поэтому я предположил, что это позаботится об этом, но, по-видимому, нет. Идея состоит в том, чтобы иметь статическую страницу, размещенную на страницах GitHub, которая может выполнять все основные операции CRUD против листа Google. Я хочу иметь возможность добавлять строки, обновлять существующие ячейки, может быть, удалить строку, а также прочитать данные обратно, на протяжении всего jQuery Ajax вызовы с фронта. Теперь все сломано). В идеале мне хотелось бы настройку, в которой мой статический сайт может просто поговорить непосредственно с конечной точкой скрипта приложений без необходимости прокси -API, поскольку они ограничены или платят. Страницы), о которых я должен знать? Пожалуйста, помогите спасибо.
Подробнее здесь: https://stackoverflow.com/questions/797 ... rigin-null
Мобильная версия