我使用pysimplesoap API来支持SOAP服务器,代码如下:
httpd = BaseHTTPServer.HTTPServer(("", 8008), SOAPHandler)
httpd.dispatcher = dispatcher
httpd.serve_forever()
这很好用,但是如果使用JS / XMLHttpRequest(CORS问题)生成请求则不行,因为SOAPHandler的默认实现不支持OPTIONS方法。我补充说:
class MySOAPHandler(SOAPHandler):
def do_OPTIONS(self):
self.send_response(200)
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
self.send_header("Access-Control-Allow-Headers", "X-Requested-With")
self.end_headers()
但代码仍然不支持CORS请求,HTTP状态为0?
答案 0 :(得分:0)
CORS是一个特别顽固的标准。除了“基本”请求之外,对“选项”的静态响应将不起作用。你需要做一些改变:
Access-Control-Allow-Origin
可能不是通配符。它必须是一个特定的领域。只需查看请求标头并回显Origin
字段。Access-Control-Allow-Headers
也应该是动态的,因为客户/ JS倾向于在那里抛出古怪的东西。回复Access-Control-Request-Headers
字段。Access-Control-Allow-Credentials: true
标题。Access-Control-Max-Age: 1
标题。如果没有此标头,浏览器将长时间缓存OPTIONS请求的结果。这对于生产部署来说很好,但是为了测试它只会让人讨厌。