簡體   English   中英

“沒有'Access-Control-Allow-Origin'標題存在”與Cherrypy錯誤

[英]“no 'Access-Control-Allow-Origin' header is present” error with Cherrypy

我在HTML頁面中有以下javascript

<script>
    function getContent(page)
    {
        var xmlhttp;
        if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
        else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
             {
                var json = xmlhttp.responseText;
                obj = JSON.parse(json);
                document.getElementById("content").innerHTML=obj.content;
                document.getElementById("title").innerHTML=obj.title;
             }
        }
    xmlhttp.open("GET","http://differentserver.com:8080?page="+page,true);
    xmlhttp.send();
}
</script>

和一個使用cherrypy服務JSON的python腳本,其代碼是:

import cherrypy
import json

class ContentGeneratorService(object):
exposed = True
@cherrypy.tools.accept(media='text/plain')
def GET(self, page='home'):
    file_title = open(page + '.title', 'r')
    file_content = open(page + '.content', 'r')
    return json.dumps({"title": file_title.read().replace('\n', ''), "content":     file_content.read().replace('\n', '') })


def CORS():
cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"

if __name__ == '__main__':
conf = {
    '/': {
        'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
        'tools.sessions.on': True,
        'tools.response_headers.on': True,
        'tools.response_headers.headers': [('Content-Type', 'text/plain')],
        }
    }

cherrypy.server.socket_host = '0.0.0.0'
cherrypy.tools.CORS = cherrypy.Tool('before_handler', CORS)
cherrypy.config.update({'server.socket_port': 8080})
cherrypy.quickstart(ContentGeneratorService(), '/', conf)

但是,我得到一個“沒有'Access-Control-Allow-Origin'標題存在”錯誤。 有沒有辦法啟用CORS與cherrypy?

謝謝。

它似乎現在工作。 我補充道

'tools.CORS.on': True

conf。

cherrypy.response.headers [“Access-Control-Allow-Origin”] =“*”

是非常危險的,因為現在任何站點都可以對您的服務器進行AJAX調用並獲取python腳本提供的內容。 而是使用

cherrypy.response.headers [“Access-Control-Allow-Origin”] =“您的站點域名”

是一個非常安全的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM