尝试对 WCF 服务进行跨域 HTTP 请求时,必须考虑 CORS 限制。本文探讨了如何使用 OPTIONS 预检 HTTP 请求来克服这些障碍。
在发送实际请求之前,浏览器使用 OPTIONS 请求预检请求以确定服务器是否允许该请求。此步骤包括发送两个特殊请求标头:
为了适应这些预检请求,服务器应使用适当的标头进行响应:
使用 jQuery.getJSON 进行 GET 请求需要使用 OPTIONS 请求进行预检。这可以按如下方式实现:
<code class="javascript">$.ajax({ url: "http://your.wcf.endpoint", type: "OPTIONS", success: function(data) { console.log("Preflight successful:", data); } }); $.getJSON("http://your.wcf.endpoint", function(data) { console.log("Actual GET request:", data); });</code>
考虑带有以下标头的传入预检请求:
Origin: http://yourdomain.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-Custom-Header
服务器应响应:
Access-Control-Allow-Origin: http://yourdomain.com Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: X-Custom-Header
Access-Control-Request-Headers 必须在 Access-Control-Allow-Headers 响应中回显,并且不允许使用“*”通配符。
以上是预检选项请求如何启用对 WCF 服务的跨域 HTTP 访问?的详细内容。更多信息请关注PHP中文网其他相关文章!