WebAPI上的CORS问题是愚蠢还是我? Aren的网络服务假设被第三方使用?有人可以向我解释为什么在调用WebAPI时遇到问题,如果它在不同的域上,它是一个Web服务,它假设在不同的域上!
我将CORS库添加到我的WebAPI并在我的配置中添加了启用,但仍然无效。
谁的好主意是为了获得CORS的信息而打两个电话。现在我的所有要求都会加倍!?
如何修复AngularJS和Webapi之间的CORS问题?如果有人能够从理论上向我解释,为什么我可以在没有这个CORS的情况下调用我的Web服务,这真的很好。 Aren的网络服务假设被所有人使用?
答案 0 :(得分:0)
CORAP问题不会发生在WebAPI部分。当WebAPI和客户端位于两个不同的端口时,它将始终位于客户端部分。
如果是ASP.NET WebAPI,则需要安装Microsoft.Owin.Cors包并在Web服务器启动时初始化CORS。
在WebiApiConfig.cs中输入类似的内容:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Cache-Control" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<强>的Web.Config 强>
class Object2(QObject):
def __init__(self):
super().__init__()
@pyqtSlot(object)
def slot(self, data):
print("Received data %s in thread %s" % (data, QThread.currentThread()))
while len(data) < 10:
time.sleep(1)
print("Current data is %s" % data)
class Object1(QObject):
def __init__(self):
super().__init__()
sig = pyqtSignal(object)
@pyqtSlot()
def emit_in_thread(self):
self.data = [1]
print("Emitting data %s in thread %s" % (self.data, QThread.currentThread()))
self.sig.emit(self.data)
while len(self.data) < 10:
time.sleep(1)
self.data += [1]
print("Modified data to %s" % self.data)
# App
q_app = QApplication(sys.argv)
# Setup
thread = QThread()
obj1 = Object1()
obj1.moveToThread(thread)
thread.start()
obj2 = Object2()
obj1.sig.connect(obj2.slot, type=Qt.QueuedConnection)
# Emit soon
QTimer.singleShot(200, obj1.emit_in_thread)
# Run event loop
sys.exit(q_app.exec_())