Я разрабатываю очень простое веб-приложение, которое ищет акции компании.
Вот код JS (использует AJAX для получения акций компании с сервера):
document.getElementById("requestQuoteBtn").addEventListener("click", function createQuoteRequest(){
var quoteSymbol = document.getElementById("requestedSymbol").value;
var quoteRequest = createAJAX();
quoteRequest.open('GET', '/quote?sym='+quoteSymbol);
quoteRequest.send();
quoteRequest.onload = function getQuoteRequest(){
if(quoteRequest.status == 200){ // SUCCESSFUL
displayQuoteData(false, JSON.parse(quoteRequest.response)); // basically shows a hidden div with the data
}
else // NO COMPANY W/ THIS SYMBOL FOUND
displayQuoteData(true, null);
};
});
Вот код Flask:
@app.route("/quote", methods=["GET"])
@login_required
def quote():
requestedSymbol = request.args.get("sym")
if not requestedSymbol:
return "no symbol"
quoteData = lookup(requestedSymbol) # USES AN API TO FETCH COMPANY'S STOCK
if quoteData is None:
return "NONE", 404
else:
return quoteData
Проблема в том, что если пользователь обращается, например, к этому URL-адресу:
www.mywebsite.com/quote?sym=AAPL
Буквально будет отображатьсясырой HTML с данными JSON вместо моего сайта с данными:
{"name":"Apple, Inc.","price":"$245.18","symbol":"AAPL"}
Как я могу предотвратить это?