来自新手的简短问题。有没有其他人使用Aptana Studio 3在使用W3C验证时收到任何错误消息?
Status: 403 Forbidden Vary: Referer Content-type: text/html
Markup Validation Service
Sorry! This document can not be checked.
No User-Agent header found!
谷歌快速建议其他编辑/ IDE用户遇到类似的事情,例如: HTML的工具包。看起来好像W3C验证服务需要一个用户代理字符串,因为它可以直接由浏览器提供,但可能不是由编辑器/ IDE提供的?
我知道通过使用不同的验证服务或通过浏览器检查代码,可以解决问题。我以为我会把它标记出来。
答案 0 :(得分:2)
我已经为此向Aptana Studio项目提交了修复程序。 此修复涉及将http用户代理添加到发送到w3c的帖子。
使用以下文本替换w3c_validation.rb文件中的文本。 示例路径: C:\ Users \ user \ AppData \ Local \ Aptana Studio 3 \ configuration \ org.eclipse.osgi \ bundles \ 101 \ 1.cp \ bundles \ html.ruble \ commands \ w3c_validation.rb
require 'ruble'
command t(:validate_syntax) do |cmd|
cmd.key_binding = 'CONTROL+M2+V'
cmd.scope = 'text.html'
cmd.output = :show_as_html
cmd.input = :document
cmd.invoke do |context|
$KCODE = 'U'
page = $stdin.read
page.gsub!(/<\?(php|=).*?\?>|<%.*?%>/m, '')
w3c_url = 'http://validator.w3.org/check'
require 'net/http'
require 'uri'
#fix for w3c blocking http requests without a user-agent
#changed the way the http post is sent to w3c so that it includes a user-agent
uri = URI(w3c_url)
req = Net::HTTP::Post.new(uri.path)
req.set_form_data({'ss' => "1", 'fragment' => page})
req['User-Agent'] = 'Aptana'
response = Net::HTTP.start(uri.host, uri.port) do |http|
http.request(req)
end
status = response['x-w3c-validator-status']
content = response.body
content = content.gsub(/<\/title>/, '\&<base href="http://validator.w3.org/">')
# content.gsub!(/Line (\d+),? Column (\d+)/i) do
# # FIXME These links won't work for us!
# "<a href='txmt://open?line=#\$1&column=#{\$2.to_i + 1}'>#\$&</a>"
# end
content
end
end
答案 1 :(得分:0)
您的IDE中的浏览器不符合W3C HTTP标准
此外,您无法使用Web工具检查尚未发布到Web的页面。您需要设置一个小型测试服务器才能使用它。
首先,使用其他浏览器。所有浏览器都应该发送一个用户代理字符串,没有网站应该依赖于该字符串的存在,或者黑名单已知的坏浏览器。
您真的应该使用合规性测试开发人员工具集在兼容的浏览器(如Chrome或Firefox)中测试您的代码,而不是来自您的IDE。
如果必须,您可以从W3C网站下载客户端版本的工具来检查您的代码。它是一个可从所有平台获得的命令行工具。 Firefox,Chrome和衍生产品的扩展可以使用这些工具的库版本。 (同样,您无法使用IDE浏览器。)