2017-07-28 35 views
-1

我有以下的燒瓶(Python)的服務器上運行的JS腳本的HTTP請求:如何發佈從一個網站到我的本地服務器(本地主機)

from flask import Flask, render_template, request, redirect, Response,jsonify 
import random, json 

app = Flask(__name__) 


@app.route('/') 
def output(): 
    return redirect("This is a temporary implementation.") 

@app.route('/model',methods = ['POST']) 
def ask_model(): 
    data = request.get_json(force=True) 
    print("data recieved: "+str(data)) 
    return jsonify({'vlaue': "some response"}) 



if __name__ == '__main__': 
    # run! 
    #the "IP:Port" the server listens to is "localhost:5000" 
    app.run() 

我也有一個正在運行的JS腳本網站名爲slither.io(來源:https://github.com/ErmiyaEskandary/Slither.io-bot

我想創建一個學習機器人,爲了做到這一點,我需要發送此JS腳本和服務器之間的請求,但我不知道該怎麼做。

例如,我加入以下行腳本:

console.log("pre-post"); 
$.post('http://localhost:5000/model',JSON.stringify(canvasUtil.mapToMouse(window.goalCoordinates)), 
    function(){ 
     console.log("entered model function."); 
       },'json'); 
console.log("post-post"); 

當我看到控制檯日誌中唯一的「崗前」被打印出來,和我的服務器不接收任何請求。

爲什麼我的請求不能到達本地服務器? 我如何解決這個問題,以便我的服務器能夠得到請求並對它們做出響應?

+0

您是否在運行本地服務器的同一臺機器上測試此代碼?否則,這顯然不能工作。 – CBroe

+0

即使你在本地測試,如果腳本運行的站點被請求使用除「http:// localhost:5000 /」以外的任何其他來源,這仍然是一個跨域請求,所以你的應用將首先所有必須正確處理CORS飛行前請求... – CBroe

+0

感謝您的回覆。你能稍微解釋一下還是給一些源讀? (1)服務器運行在我的本地計算機上,並使用greaseMonkey運行的JS腳本,就我所知,只是從控制檯調用腳本。爲什麼它不工作? (2)什麼是跨域請求,爲什麼與我的案例有關?我只是想從腳本發送一個請求到我的服務器並對其作出響應 – Yair

回答

1

由於CBore說,你必須正確處理COORS,那麼你必須使用你的localhost服務器的IP地址,但你應該有一個靜態IP或當你的本地主機IP地址發生變化時,請求沒有達到你的服務器

+0

_「正如CBore所說的,你必須正確地處理COORS」 - - 實際上我沒有說他們應該喝便宜的啤酒; – CBroe

+0

謝謝你的迴應。 COORS和CORS是相同的東西,即這些來源是否可以幫助我解決問題?(1)https://www.html5rocks.com/en/tutorials/cors/(2)https://stackoverflow.com/問題/ 298745 /怎麼辦 - 我 - 發送 - 一個交叉域請求後通過JavaScript的 – Yair

相關問題